我正在尝试向使用CloudFlare的第三方应用程序接口发送GET请求。
这在以前是有效的,但突然就在这几天没有改变我的代码,这个异常继续抛出。
org.springframework.http.InvalidMediaTypeException: Invalid mime type "text/plain charset=UTF-8": Invalid token character ' ' in token "plain charset=UTF-8"
at org.springframework.http.MediaType.parseMediaType(MediaType.java:534)
at org.springframework.http.HttpHeaders.getContentType(HttpHeaders.java:926)
at org.springframework.web.client.HttpMessageConverterExtractor.getContentType(HttpMessageConverterExtractor.java:133)
at org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:90)
at org.springframework.web.client.RestTemplate$ResponseEntityResponseExtractor.extractData(RestTemplate.java:995)
at org.springframework.web.client.RestTemplate$ResponseEntityResponseExtractor.extractData(RestTemplate.java:978)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:737)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:670)
at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:579)
at com.baxin.sscapi.cpdatacollector.fetch.FetchService$Callable_Fetch.call(FetchService.java:469)
at com.baxin.sscapi.cpdatacollector.fetch.FetchService$Callable_Fetch.call(FetchService.java:438)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: org.springframework.util.InvalidMimeTypeException: Invalid mime type "text/plain charset=UTF-8": Invalid token character ' ' in token "plain charset=UTF-8"
at org.springframework.util.MimeTypeUtils.parseMimeType(MimeTypeUtils.java:247)
at org.springframework.http.MediaType.parseMediaType(MediaType.java:531)
... 16 common frames omitted
这是我的代码。请注意,这在以前是有效的。
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
headers.setBearerAuth(token);
headers.set("user-agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36");
HttpEntity request = new HttpEntity(headers);
responseData = restTemplate.exchange(url, HttpMethod.GET, request, String.class,1);
此外,请注意,此请求是多线程的,并且以毫秒为间隔频繁执行。
我真的很期待任何关于这方面的建议或意见。
谢谢。
发布于 2021-11-12 13:49:21
由于响应中的媒体类型后缺少content-type的;
,所以很可能是第三方接口发生了变化(与您请求的媒体类型也不同)。
格式良好的内容类型应该是text/plain; charset=UTF-8
我建议联系API提供商。
https://stackoverflow.com/questions/69938899
复制相似问题