繁体   English   中英

如何为 Postman 的二进制类型的请求正文构建 RestTemplate?

[英]How to frame RestTemplate for request body of type binary of Postman?

我正在尝试使用 RestTemplate 调用第三方服务。但是当我尝试通过我的 Java 代码调用该服务时,它抛出了 BadRequest 错误。 由于我无法弄清楚如何为 API 构建 Resttemplate,我在这里请求有关如何为此类请求构建请求正文的建议,也请查看我现有的代码并帮助我找出错误代码。

邮递员请求的样子: 请求的邮递员视图

以下是 Postman 中形成的代码片段:

 OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
  .url("")
  .post(null)
  .addHeader("Authorization", "************")
  .addHeader("User-Agent", "PostmanRuntime/7.13.0")
  .addHeader("Accept", "*/*")
  .addHeader("Cache-Control", "no-cache")
  .addHeader("Postman-Token", "**********")
  .addHeader("Host", "**************")
  .addHeader("accept-encoding", "gzip, deflate")
  .addHeader("content-length", "160200")
  .addHeader("Connection", "keep-alive")
  .addHeader("cache-control", "no-cache")
  .build();

Response response = client.newCall(request).execute();

// 其中文件是文件类型

LinkedMultiValueMap<String, Object> map = new LinkedMultiValueMap<>();
map.add("file", new ClassPathResource(file));

HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.TEXT_PLAIN);

HttpEntity<LinkedMultiValueMap<String, Object>> requestEntity = new    
HttpEntity<LinkedMultiValueMap<String, Object>>(
                map, headers);
ResponseEntity<String> result = template.get().exchange(
                contextPath.get() + path, HttpMethod.POST, requestEntity,
                String.class);

我想成功调用第三方实体并获得响应。

使用具有byte[]类型且没有内容类型的ResponseEntity

InputStream inputStream = new ClassPathResource("myFile.jpg").getInputStream();
byte[] data = IOUtils.toByteArray(inputStream);
HttpEntity<byte[]> requestEntity = new HttpEntity<>(data);

restTemplate.exchange("url", HttpMethod.POST, requestEntity , String.class);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM