0%

restTemplate解析401异常失败

restTemplate解析401异常失败

如果使用restTemplate默认构造器的话,在进行错误解析的时候,使用

1
2
3
4
5
6
7
8
9
10
11
12
13
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

1
RestTemplate restTemplate = new RestTemplate(new HttpComponentsClientHttpRequestFactory());