post表单数据与springrestemplate

li9yvcax  于 2021-07-15  发布在  Java
关注(0)|答案(1)|浏览(594)

我必须发出一个HTTPPOST请求,以从上传文件(.doc/.jpg等)的外部api获取“上传成功”通知。目前,我正在使用以下postman命令调用api:

这是我的控制器类:

  1. @RestController
  2. public class PushNotif {
  3. @Bean
  4. public RestTemplate restTemplate(RestTemplateBuilder builder) {
  5. return builder.build();
  6. }
  7. @Autowired
  8. RestTemplate restTemplate;
  9. private static Logger logger = LogManager.getLogger(PushNotif.class.getName());
  10. @RequestMapping(value = "/upload/notif", method = RequestMethod.POST)
  11. public String NotifStatus(@RequestParam("file") MultipartFile file) {
  12. final String url = "http://localhost:8080/upload";
  13. HttpHeaders headers = new HttpHeaders();
  14. headers.setAccept(Arrays.asList(MediaType.MULTIPART_FORM_DATA));
  15. HttpEntity<MultipartFile> entity = new HttpEntity<MultipartFile>(file, headers);
  16. return restTemplate.exchange(url, HttpMethod.POST, entity,
  17. String.class).getBody();
  18. }

}
但我得到内部服务器错误。

  1. [Request processing failed; nested exception is org.springframework.http.converter.HttpMessageConversionException: Type definition error: [simple type, class java.io.FileDescriptor]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class java.io.FileDescriptor and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: org.springframework.web.multipart.support.StandardMultipartHttpServletRequest$StandardMultipartFile["inputStream"]->java.io.FileInputStream["fd"])] with root cause
  2. com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class java.io.FileDescriptor and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: org.springframework.web.multipart.support.StandardMultipartHttpServletRequest$StandardMultipartFile["inputStream"]->java.io.FileInputStream["fd"])

如何在rest中将http请求上传到文件(.doc/.jpg等)作为回报,我在客户端得到了通知(json)“post request successful”。请让我知道或指向我的任何参考。

gorkyyrv

gorkyyrv1#

是否尝试添加product=mediatype.multipart\ form\ data\ value?就像这样:

  1. @RequestMapping(value = "/upload/notif", method = RequestMethod.POST produces = MediaType.MULTIPART_FORM_DATA_VALUE)

您不能在响应中添加http状态201或200。意思是“请求成功”

相关问题