我刚刚春天刚尝试做 HTTP POST请求应用程序/ x-www-form-url encoded ,但是当我把它保存在我的标题中时,那么就不会认识它并说{{1 }}
415 Unsupported Media Type
org.springframework.web.HttpMediaTypeNotSupportedException:Content 输入'application / x-www-form-urlencoded'不支持
任何人都知道如何解决它吗?请评论我。
我的控制器的一个例子是:
x-www-form-urlencoded
答案 0 :(得分:34)
问题在于,当我们使用 application / x-www-form-urlencoded 时,Spring并不将其理解为RequestBody。所以,如果我们想要使用它 我们必须删除 @RequestBody 注释。
然后尝试以下方法:
@RequestMapping(value = "/patientdetails", method = RequestMethod.POST,consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
public @ResponseBody List<PatientProfileDto> getPatientDetails(
PatientProfileDto name) {
List<PatientProfileDto> list = new ArrayList<PatientProfileDto>();
list = service.getPatient(name);
return list;
}
请注意,删除了注释 @RequestBody
答案 1 :(得分:4)
您应将 @RequestBody 替换为 @RequestParam ,并且不要使用Java实体接受参数。
然后您的控制器可能是这样的:
@RequestMapping(value = "/patientdetails", method = RequestMethod.POST,
consumes = {MediaType.APPLICATION_FORM_URLENCODED_VALUE})
public @ResponseBody List<PatientProfileDto> getPatientDetails(
@RequestParam Map<String, String> name) {
List<PatientProfileDto> list = new ArrayList<PatientProfileDto>();
...
PatientProfileDto patientProfileDto = mapToPatientProfileDto(mame);
...
list = service.getPatient(patientProfileDto);
return list;
}
答案 2 :(得分:0)
您必须告诉Spring您的服务支持哪些输入内容类型。您可以使用&#34;消费&#34;与您的请求相对应的注释元素&#34;内容类型&#34;报头中。
@RequestMapping(value = "/", method = RequestMethod.POST, consumes = {"application/x-www-form-urlencoded"})
如果您发布了代码,那将会很有帮助。
答案 3 :(得分:0)
最简单的方法是将ajax请求的内容类型设置为&#34; application / json;字符集= UTF-8&#34;然后让你的api方法消耗json。喜欢这个
var basicInfo = JSON.stringify(
{
firstName : playerProfile.firstName(),
lastName : playerProfile.lastName(),
gender : playerProfile.gender(),
address : playerProfile.address(),
country : playerProfile.country(),
bio : playerProfile.bio()
});
$.ajax({
url: "http://localhost:8080/social/profile/update",
type: 'POST',
dataType: 'json',
contentType: "application/json; charset=utf-8",
data: basicInfo,
success: function(data) {
}
});
@RequestMapping(value = "/profile/update", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<ResponseModel> UpdateUserProfile(@RequestBody User usersNewDetails, HttpServletRequest request, HttpServletResponse response){
我猜测问题是spring boot有问题提交表单数据,这不是json通过ajax请求。 注意:ajax的默认内容类型是&#34;应用程序/ x-WWW窗体-urlencoded&#34;
答案 4 :(得分:0)
解决方案可以在这里https://github.com/spring-projects/spring-framework/issues/22734
您可以创建两个单独的发布请求映射。例如。
{{1}}
答案 5 :(得分:0)
将contentType替换为“ application / x-www-form-urlencoded”,而将dataType替换为“ text”,因为wildfly 11不支持所提及的contenttype。