【发布时间】:2019-03-29 23:41:52
【问题描述】:
我出于某种目的使用了第 3 方 API。
这个 API 用一个 URL 响应,它基本上是一个亚马逊 AWS url,它实际上包含我感兴趣的数据。
我可以通过浏览器和 Postman 调用 AWS URL,后者会返回数据。
但是通过代码,我收到以下错误:
InvalidMimeTypeException: Invalid mime type "json": does not contain '/'
我正在使用 Spring Boot 并制作 http calss,我正在使用 RestTemplate。
响应头:
accept-ranges →bytes
content-length →1428
content-type →json
date →Thu, 25 Oct 2018 10:05:57 GMT
last-modified →Wed, 24 Oct 2018 18:44:44 GMT
server →AmazonS3
Content-Type 是 "json"
我用过的代码:
protected HttpHeaders httpHeader(String encodedApiKey) {
HttpHeaders headers = new HttpHeaders();
headers.set("Content-Type", " */*");
headers.add(HttpHeaders.ACCEPT, " */*");
headers.add(HttpHeaders.ACCEPT_CHARSET, StandardCharsets.UTF_8.name());
if (encodedApiKey != null && !encodedApiKey.isEmpty()) {
headers.add("Authorization", "Basic " + encodedApiKey);
}
return headers;
}
private HttpEntity<Tickets> getHttpEntity(String apiKey) {
if (apiKey== null || apiKey.isEmpty()) {
return new HttpEntity<>(httpHeader(null));
}
return new HttpEntity<>(httpHeader(encodeBase64(apiKey)));
}
ResponseEntity<Tickets> responseEntity = restTemplate.exchange(awsUri,
HttpMethod.GET,
httpEntity, new ParameterizedTypeReference<Tickets>() {});
}
这是一个例外:
org.springframework.http.InvalidMediaTypeException: Invalid mime type "json": does not contain '/'
at org.springframework.http.MediaType.parseMediaType(MediaType.java:534)
at org.springframework.http.HttpHeaders.getContentType(HttpHeaders.java:869)
at org.springframework.web.client.HttpMessageConverterExtractor.getContentType(HttpMessageConverterExtractor.java:124)
at org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:88)
at org.springframework.web.client.RestTemplate$ResponseEntityResponseExtractor.extractData(RestTemplate.java:959)
at org.springframework.web.client.RestTemplate$ResponseEntityResponseExtractor.extractData(RestTemplate.java:942)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:689)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:662)
at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:339)
- 我做错了什么?
- 我尝试过使用
ClientHttpRequestInterceptor,但这不会修改服务器的响应头(或Content-Type 为application/json强>)
有人知道吗?
【问题讨论】:
-
我认为您应该在客户端的请求中使用
application/json。使用邮递员发送请求的最佳方式。 -
尝试使用此标头发送请求:
headers.add(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON_VALUE); -
@PandeyAmit 做到了。不工作。
-
@Freemahn 不起作用。同样的问题。
标签: java spring http spring-boot resttemplate