使用 linkedin v2 api 共享图像时未在页面提要上发布

2023-12-03

好吧,这是我的问题.. 要通过 linkedin api 共享图像帖子,您首先必须注册您的图像文件,您可以通过发送二进制文件的帖子请求来完成此操作。然后,您使用原始请求中的图像 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,但它仍然没有发布。 这是他们给出的请求的卷曲示例分享API文档.

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;
        }

输出返回一个空字符串。

Edit2:另一件有趣的事情是,当我执行主请求时,我在其中发送文本,以及提交图像后得到的媒体瓮,我再次得到 201,就像它成功了一样,在响应中我什至得到了帖子 ID。然后我尝试使用另一个 api 端点并使用我从响应中获得的 id 拉取该帖子,并且我获得了所有数据,就像帖子已发布一样。它甚至在 json 中说我得到生命周期已发布并且媒体的状态已准备就绪。与 linkedin 上的 json 图片帖子唯一不同的是,媒体对象有缩略图,在本例中没有,它只是一个空的 json 数组。


我找到了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);
        }
    }

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 linkedin v2 api 共享图像时未在页面提要上发布 的相关文章

随机推荐