gpt4 book ai didi

java - 出现 4** 错误时的 postForEntity 异常

转载 作者:行者123 更新时间:2023-12-05 08:08:10 24 4
gpt4 key购买 nike

我创建了一个通用方法来调用外部 API(后调用)。如果外部 rest API 返回 2**,则一切正常,但如果出现任何错误,则会引发异常。

是否可以将此 4** 响应视为正常答案而不是生成异常?问题是我需要获取错误消息(响应正文)并发回给调用者。

这是我的代码:

public ResponseEntity<String> post(String api, Map<String, Object> data) { 

ResponseEntity<String> response = new ResponseEntity<String>(HttpStatus.OK);

try {

StopWatch stopwatch = new StopWatch();
stopwatch.start();

log.debug("post(): " + host + "/" + api );

// Set the headers
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);

// Convert the Map to Gson
Gson gson = new Gson();
String json = gson.toJson(data);

// Call the API
HttpEntity<?> request = new HttpEntity<>(json, headers);
response = new RestTemplate().postForEntity(host + "/" + api, request, String.class);

stopwatch.split();
log.info("All request completed [" + response.getStatusCode() + "] in " + stopwatch.getSplitTime());

return response;

} catch (Exception ex) {
log.error(ex);
throw new RuntimeException();
}

}

如果出现错误,外部 API 将返回:

ResponseEntity<Integer> response = new ResponseEntity<Integer>();
[.. business code ..]
res.setResponse(new ResponseEntity<String>(CommonValue.userNotFound, HttpStatus.UNAUTHORIZED));

最佳答案

使用返回 ResponseEntity 的 RestTemplate#exchange(..) 方法。这不会引发异常,但会将答案解析到 ResponseEntity 中,您可以在其中检索状态代码等。

关于java - 出现 4** 错误时的 postForEntity 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51753691/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com