Invalid mime type “application/json; utf-8=“: ‘value‘ must not be empty解决方法

遇到一个很奇怪的问题

org.springframework.http.InvalidMediaTypeException: Invalid mime type "application/json; utf-8=": 'value' must not be empty

	at org.springframework.http.MediaType.parseMediaType(MediaType.java:586)
	at org.springframework.http.HttpHeaders.getContentType(HttpHeaders.java:967)
	at org.springframework.web.client.HttpMessageConverterExtractor.getContentType(HttpMessageConverterExtractor.java:136)
	at org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:93)
	at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:741)
	at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:674)
	at org.springframework.web.client.RestTemplate.postForObject(RestTemplate.java:418)

调用的地方是

response = restTemplate.postForObject(url, httpEntity, Xxx.class);

这是一个很老的调用了,2018年的代码,忽然报这个错,很奇怪。
网上找了一下,没找到有遇到这个问题的,就只能根据日志解决了。
看源码可以看到是这个方法调用的时候出错
Invalid mime type “application/json; utf-8=“: ‘value‘ must not be empty解决方法_第1张图片
是以下地方调用的
Invalid mime type “application/json; utf-8=“: ‘value‘ must not be empty解决方法_第2张图片
可以看到应该是在getFirst中未取到值造成的。
Invalid mime type “application/json; utf-8=“: ‘value‘ must not be empty解决方法_第3张图片
在getFirst方法中,是直接调用了headers.getFirst方法,headers的定义
在这里插入图片描述

到这已经看不出太大问题了,就继续向上找吧。
在HttpMessageConverterExtractor的getContentType方法中,可以看到
Invalid mime type “application/json; utf-8=“: ‘value‘ must not be empty解决方法_第4张图片
那这样就可以找到解决的方法了,直接在请求的header中调用setContentType方法即可

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

这样在调用的时候就可以直接取到了。

你可能感兴趣的:(Java,异常记录及解决方法,源码分析,json,java,spring)