Java Spring-RestTemplate引发InvalidMediaTypeException
我正在处理SpringRESTTemplate,在执行下面的代码之后,我得到了Java Spring-RestTemplate引发InvalidMediaTypeException,java,spring,exception,resttemplate,media-type,Java,Spring,Exception,Resttemplate,Media Type,我正在处理SpringRESTTemplate,在执行下面的代码之后,我得到了InvalidMediaTypeException。当我在RestClient应用程序中执行相同的服务时,我得到了一个有效的响应。请帮忙 ResponseEntity<String> response = restTemplate.exchange(restUrl,HttpMethod.valueOf(method), new HttpEntity<byte[]>(headers), Strin
InvalidMediaTypeException
。当我在RestClient应用程序中执行相同的服务时,我得到了一个有效的响应。请帮忙
ResponseEntity<String> response = restTemplate.exchange(restUrl,HttpMethod.valueOf(method), new HttpEntity<byte[]>(headers), String.class);
这是因为客户端内容类型和服务器接受内容类型之间不匹配。
基本正常的“获取”方法默认内容类型为“文本/普通”,但您的案例服务器需要的不是“文本/普通”的内容。因此,当您向服务器发送请求时,应该更改头的contenttypeSpring对响应的
内容类型进行了严格的解析。正如错误消息所暗示的,内容类型字段中不允许使用空格字符(除非使用引号)。你可以在或中阅读。确保您调用的服务器符合这些规则。异常和堆栈跟踪说明了一切:
在客户端,您有:
ResponseEntity<String> response
= restTemplate.exchange(
restUrl,
HttpMethod.valueOf(method),
new HttpEntity<byte[]>(headers), // <-- contains bad "Content-Type" value
String.class);
当请求到达服务器时,它尝试使用MediaType#parseMediaType(String)
解析此标头值,但空格字符无效,如异常消息所述:
令牌“简单边界”中的无效令牌字符“”
下一步是调查标题是如何填充的。标题中有什么?内容类型:application/x-www-form-urlencoded是标题。方法是GET,并将所有参数作为URL的一部分传递。如果我没有错的话,空格字符是响应内容类型的一部分。我能做些什么来避免这种情况?@RajaAsthana谁在运行服务器应用程序?应该纠正的是服务器端;目前,它似乎发送了语法错误的响应。@RajaAsthana其他REST客户端很可能执行更“宽松”(不太严格)的解析。
ResponseEntity<String> response
= restTemplate.exchange(
restUrl,
HttpMethod.valueOf(method),
new HttpEntity<byte[]>(headers), // <-- contains bad "Content-Type" value
String.class);
"Content-Type" -> "multipart/mixed;boundary=simple boundary;charset=UTF-8"`