当前位置: 首页 > 知识库问答 >
问题:

与linkedin v2 api的图像共享未在页面提要上发布

聂炜
2023-03-14

好吧,这就是我的问题。。要通过linkedin api共享图像帖子,首先必须注册图像文件,然后通过发送二进制文件的post请求进行注册。然后使用原始请求中的图像URN提交帖子。我的请求通过,返回201代码(这应该是一个成功的请求),但最终没有发布图像或文本。如果我试着只发文本,它会起作用。我曾尝试使用curl注册我的图像,并将其发布在linkedin上,因此我认为我没有在请求中正确发送二进制文件,这是我的请求:

            HttpClient client = HttpClientBuilder.create().build();
            HttpPut request = new HttpPut(uploadUrl);
            request.addHeader("Content-Type", "data/binary");
            request.setHeader("X-Restli-Protocol-Version", "2.0.0");
            request.setHeader("Authorization", "Bearer " + myToken);

            File file = new File(pictureUrl);

            MultipartEntityBuilder builder = MultipartEntityBuilder.create();
            builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
            builder.addBinaryBody("upload-file", file);
            request.setEntity(builder.build());
            HttpResponse response = client.execute(request);

我用这个代码得到了代码201,但是它仍然没有发布。这是他们在共享应用编程接口文档上给出的请求的curl示例。

curl -i --upload-file /Users/peter/Desktop/superneatimage.png --header "Authorization: Bearer redacted" 'https://api.linkedin.com/mediaUpload/C5522AQGTYER3k3ByHQ/feedshare-uploadedImage/0?ca=vector_feedshare&cn=uploads&m=AQJbrN86Zm265gAAAWemyz2pxPSgONtBiZdchrgG872QltnfYjnMdb2j3A&app=1953784&sync=0&v=beta&ut=2H-IhpbfXrRow1'

你能告诉我我的java等价物有什么问题吗?

编辑:忘了说我甚至尝试从java调用curl,我在终端中使用的相同代码,它仍然不工作...

        Process p;
        try {
            p = Runtime.getRuntime().exec("curl -i --upload-file" + " " + pictureUrl + " " + "--header \"Authorization: Bearer " + myToken + "\" '" + uploadUrl + "'");
            p.waitFor();
            BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));

            String line = "";
            String outputController = "";
            while ((line = reader.readLine()) != null) {
                outputController = outputController + '\n' + line;
            }
            System.out.println("out: ");
            System.out.println(outputController);
            return true;
        } catch (IOException | InterruptedException ex) {
            return false;
        }

输出返回一个空字符串。

Edt2:另一个有趣的事情是,当我执行主请求,发送文本,以及提交图片后得到的媒体URNs时,我再次得到201,就像它是成功的一样,在响应中,我甚至得到了后ID。然后我尝试使用另一个APIendpoint,并使用响应中得到的ID来拉动该帖子,并且我得到所有的数据,比如帖子被张贴。它甚至在json中说,我得到的生命周期已经发布,媒体的状态已经准备好。唯一不同于linkedin上的json图像帖子的是,媒体对象有缩略图,而在本例中没有缩略图,它只是一个空的json数组。

共有3个答案

通京
2023-03-14

不熟悉Java,但我在使用Ruby时遇到了同样的问题,我通过在请求标题中添加我上传的图像的MIME类型作为内容类型来修复它。所以在您的特定情况下,它将是:

request.addHeader("Content-Type", "image/png");

还可以看看我使用Ruby的RestClient和Minimagick的解决方案:https://stackoverflow.com/a/54902863/7844946

翟俊
2023-03-14

好的,我已经解决了,如果有人遇到同样的问题,这就是我做错了。在请求中,我添加了一个多部分来请求主体,这是错误的,你只要去RAW。所以而不是

    File file = new File(pictureUrl);
    MultipartEntityBuilder builder = MultipartEntityBuilder.create();
    builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
    builder.addBinaryBody("upload-file", file);
    request.setEntity(builder.build());

你就把

request.setEntity(new FileEntity(new File(pictureUrl), ContentType.create(picture.getContentType())));

然后一切顺利。

陶星渊
2023-03-14

我发现curl到C#转换器https://curl.olsh.me/下面是代码片段生成:



    using (var httpClient = new HttpClient())
    {
        using (var request = new HttpRequestMessage(new HttpMethod("PUT"), "https://api.linkedin.com/mediaUpload/C5522AQGTYER3k3ByHQ/feedshare-uploadedImage/0?ca=vector_feedshare&cn=uploads&m=AQJbrN86Zm265gAAAWemyz2pxPSgONtBiZdchrgG872QltnfYjnMdb2j3A&app=1953784&sync=0&v=beta&ut=2H-IhpbfXrRow1"))
        {
            request.Headers.TryAddWithoutValidation("Authorization", "Bearer redacted"); 

            request.Content = new ByteArrayContent(File.ReadAllBytes("/test.png")); 

            var response = await httpClient.SendAsync(request);
        }
    }

 类似资料:
  • 问题内容: 好的,所以这是我的问题。.要通过linkedin api共享图像发布,您首先必须注册图像文件,然后通过发送二进制文件的发布请求来完成此操作。然后,您使用原始请求中的图片URN提交您的帖子。我的请求经过处理,返回201代码(应该是成功的请求),但最终没有发布图像或文本。如果我尝试仅发布文本,则可以。我尝试使用curl注册我的图像,并将其发布在linkedin上,所以我认为我没有在请求中正

  • 我使用spring boot并尝试加载图像到我的html页面。 文件的完整路径:file:///d:/dyplom%20project/src/main/resources/static/slove.png当我在浏览器中运行时,所有工作和图像都在上传。 而当我转到localhost-welcomepage时,我有它: 控制台错误: 这与路径错误

  • 我有我导出到数据uri图像的HTML画布。现在我想通过点击我页面上的自定义链接,在Facebook时间线上尽可能轻松地分享这张图片(无需创建FB应用程序和身份验证令牌)。 我试过这样的方法: 图像生成: 共享链接: 当我点击链接Safari我得到 如何通过Facebook共享者URL(或其他方式)轻松共享数据uri图像? 谢谢你的回答!

  • 由于客户端问题,我必须把laravel 4应用程序共享托管服务。但我在[laravelio]遵循了这个过程,其中包括。 这应该是可行的,但是当我访问url时,我得到了这样的结果:在这个服务器上找不到请求的url/登录名。请问有什么问题,因为我不明白。可能是关于配置的。htacces文件。 任何帮助都将得到赞赏。感谢网站是在:benin1897.com 我刚刚发现public_html中没有. ht

  • 问题内容: 我的客户希望在Instagram,Twitter,Facebook上共享图像。 我已经完成了Twitter和Facebook,但是在互联网上找不到任何API或任何东西可以在Instagram上共享图像。 是否可以在Instagram上分享图片? 如果是,那怎么办? 当我检查Instagram的开发人员站点时,我发现了Ruby on Rails和Python库。但是没有iOS Sdk的文

  • 当我们共享这样的链接时,我们如何在我们的网站中包含一个图像来显示在WhatsApp中?