您好,我正在尝试通过Spring RestTemplate将图片上传到LinkedIn,步骤如下:1.初始化上传和上传url 2.使用上传url将图片链接到服务器
下面是步骤2的方法
public String uploadImageToURL(MultipartFile file, String uploadURL) throws IOException {
HttpHeaders headers = new HttpHeaders();
headers = new HttpHeaders();
headers.setContentType(MediaType.MULTIPART_FORM_DATA);
headers.add("Authorization", "Bearer Redacted");
MultiValueMap<String, Object> body = new LinkedMultiValueMap<>();
body.add("file", file.getBytes());
HttpEntity<MultiValueMap<String, Object>> reqEntity = new HttpEntity<>(body, headers);
try {
ResponseEntity<String> resp = new RestTemplate().exchange(uploadURL, HttpMethod.PUT, reqEntity, String.class);
} catch (HttpClientErrorException e) {
e.printStackTrace();
}
}
方法是给出-
org.springframework.web.client.HttpClientErrorException$BadRequest: 400 Bad Request: [no body]
我也不能从LinkedIn API的文档中找出哪里出了问题。不清楚他们给出了一个基本的cURL请求,它在 Postman 上工作得很好,但在编程上却不起作用
根据文档,上述方法的CURL
任何帮助是感激的,我已经尝试给内容类型的标题为图像/PNG,但没有效果。
PS:我已经引用了这个链接Linkedin v2 API Image upload get error 400 Bad Request,但它没有帮助
2条答案
按热度按时间kh212irz1#
您可以尝试如下操作:1-生成并打印/获取图片必须上传到的URL(上传过程的第一部分)。2-尝试使用cURL工具上传它,就像在文档中一样。如果2有效,那么您就知道前面的步骤运行良好,问题出在您发布的方法上。否则,你知道你必须寻找其他地方(步骤2之前)。
在cURL工作的情况下,上载链接的服务器可能只是接受请求,而不是使用HTTP(S),而是接受FTP或类似的格式。在这种情况下,您需要找到该协议的解决方案。
关于您当前的实施:
WebClient
:指向定义请求正文的链接最后一种方法是,如果cURL调用有效,而其他任何调用都不起作用,您可以创建一个简单的Bash/Shell脚本,该脚本仅在流程的第2部分调用。编码快乐!:)
gr8qqesn2#
找到了解决方案,实际使用
ByteArrayResource
和正确的content-type
解决了问题,这里是更新的代码我审阅了这篇question以寻求见解。