【发布时间】:2020-05-09 08:18:27
【问题描述】:
当我从我的 Angular 应用程序向 Spring Boot Rest API 发送 HTTP 发布请求时,请求失败并出现以下错误
浏览器错误
HTTP Status 415 – Unsupported Media Type
Type Status Report
Description: The origin server is refusing to service the request because the payload is in a format
not supported by this method on the target resource
Spring boot 控制台报错
java.lang.IllegalArgumentException: No converter found for return value of type: class java.util.LinkedHashMap
at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:187) ~[spring-webmvc-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.HttpEntityMethodProcessor.handleReturnValue(HttpEntityMethodProcessor.java:203) ~[spring-webmvc-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:81) ~[spring-web-4.3.8.RELEASE.jar:4.3.8.RELEASE]
.......
到目前为止我所尝试的
正如this 提到的解决方案,我已将必要的标头添加到来自角端的请求中
this.http.post(ipUrl, args, { headers: new HttpHeaders({'Content-Type': 'application/json', 'Accept': 'application/json', 'Access-Control-Allow-Headers': 'Content-Type'})});
作为this 的回答,我已将getters/setters 添加到模型对象中
我想知道我哪里出了问题以及如何解决这个问题?
更新
Springboot Rest Controller 方法
@PostMapping("/login")
public @ResponseBody ResponseWrapper<WebUser> login(@RequestBody LoginData loginData){
try {
return loginService.loginProcess(loginData);
}
catch (Exception ex){
ProgrammerAlert.printStackTrace(ex);
return new ResponseWrapper<>(ResponseWrapper.ERROR, ex.getMessage());
}
}
【问题讨论】:
-
请用 REST 控制器的代码更新问题?你在控制器方法中设置了生产和消费吗?
-
@Smile 我没有将
produces /consumes添加到控制器方法中,因为我使用的是@PostMapping()而不是@RequestMapping()。请查看更新后的问题 -
如果您尝试使用 Postman 或 Soap UI 等其他工具,它会起作用吗?
-
@Smile No. 邮递员也有同样的错误
-
什么是“args”参数?
标签: java angular spring-boot http