给出无效的 MIME 类型的 resttemplate url 响应



我正在调用如下所示的网址,但在响应中我得到无效的 mime 类型"JSON;字符集=UTF-8":不包含"/">

@RequestMapping("/")
public String hello(){
HttpHeaders headers = new HttpHeaders();
UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl("http://XXXX/Query.ashx");
HttpEntity<?> entity = new HttpEntity<>(headers);
RestTemplate restTemplate = new RestTemplate();
HttpEntity<String> response = restTemplate.exchange(
builder.toUriString(),
HttpMethod.GET,
entity,
String.class);
return  response.getBody() ;
}

从邮递员那里,我检查了 api 的响应标头,在那里我们得到了内容类型:JSON; 字符集=utf-8 ,我在这里得到。如何处理这个问题?,我们只想要普通的json响应。

使用"@RestController"注释

@Himanshu 请提供包含类级别注释的完整类信息。随之而来的问题是,在调用显示的 api 或 restTemplate.exchange 时是否出现异常?使用完整的堆栈跟踪更新您的答案以找到它。

我更喜欢使用默认为 Json 响应的@GetMapping。请尝试

您可以使用 RestTemplate 拦截器完全控制请求/响应参数:

public class MimeInterceptor implements ClientHttpRequestInterceptor {
@Override
public ClientHttpResponse intercept(final HttpRequest request, final byte[] body,
final ClientHttpRequestExecution execution) throws IOException {
request.getHeaders().add(HttpHeaders.CONTENT_TYPE, MediaType.<what you want>);
ClientHttpResponse response = execution.execute(request, body);
response.getHeaders().add(HttpHeaders.CONTENT_TYPE, MediaType.<what you want>);
return response;
}
}

在代码中:

...
RestTemplate restTemplate = new RestTemplate();
restTemplate.setInterceptors(List.of(new MimeInterceptor());
...

相关内容

  • 没有找到相关文章

最新更新