restTemplate解析401异常失败
如果使用restTemplate默认构造器的话,在进行错误解析的时候,使用
if (response.getStatusCode().isError()) { // 4XX或者5XX
InputStream inputStream = response.getBody();
}
// 此时这个response是SimpleClientHttpResponse
// 此方法为SimpleClientHttpResponse的getBody()方法
@Override
public InputStream getBody() throws IOException {
// 在这一行取出的errorStream是null 这个connection使用的是private final HttpURLConnection connection;
InputStream errorStream = this.connection.getErrorStream();
this.responseStream = (errorStream != null ? errorStream : this.connection.getInputStream());
return this.responseStream;
}
这时候需要在创建restTemplate的时候更改requestFactory,使用HttpComponentsClientHttpRequestFactory
RestTemplate restTemplate = new RestTemplate(new HttpComponentsClientHttpRequestFactory());