(这是我们服务的蓝图)
webpage <-> proxy-server <-> api-server <-> datebase
[-------- my work ---------][------- not mine -------]
我使用“RestTemplate.exchange”从proxy-server向api-server发送请求。
@Override
public <T> ResponseEntity<T> exchange(RequestEntity<?> requestEntity, ParameterizedTypeReference<T> responseType)
throws RestClientException {
Assert.notNull(requestEntity, "'requestEntity' must not be null");
Type type = responseType.getType();
RequestCallback requestCallback = httpEntityCallback(requestEntity, type);
ResponseExtractor<ResponseEntity<T>> responseExtractor = responseEntityExtractor(type);
return execute(requestEntity.getUrl(), requestEntity.getMethod(), requestCallback, responseExtractor);
}
这是我的问题。
Api服务器使用?VO生成503错误。 他们这样送我。
{
"result": {
"responseCode": "..."
},
"data": {
"time": ...,
}
}
但是当这个响应到达restTemplate时,restTemplate将它发送到errorHandler并捕获异常。
(in RestTemplate.java)
protected void handleResponse(URI url, HttpMethod method, ClientHttpResponse response) throws IOException {
ResponseErrorHandler errorHandler = getErrorHandler();
boolean hasError = errorHandler.hasError(response); // -> hasError:true!
...
}
我无法在功能之外得到回应。 我是如何得到这种回应的?
答案 0 :(得分:2)
你需要抓住VBA.Join
例外。您将通过调用HttpStatusCodeException
和正文调用getStatusCode()
异常方法来获取http状态代码。
示例:强>
getResponseBodyAsString()