【发布时间】:2019-07-22 18:28:01
【问题描述】:
好的,这是我的问题。要通过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,但它仍然没有发布。 这是他们在Share API doc 上提出的请求的 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;
}
输出返回一个空字符串。
Edit2:另一个有趣的事情是,当我执行主要请求时,我在其中发送文本和提交图像后得到的媒体骨灰盒,我再次得到 201,就像它成功一样,在响应中我什至得到帖子编号。然后我尝试使用另一个 api 端点并使用从响应中获得的 id 拉该帖子,然后我得到所有数据,就像帖子已发布一样。它甚至在 json 中说我得到生命周期已发布,并且媒体的状态为 READY。唯一与 json 不同的是,在linkedin 上的图片帖子是媒体对象有缩略图,在这种情况下他们没有,它只是一个空的 json 数组。
【问题讨论】:
标签: java curl httprequest linkedin-api