gpt4 book ai didi

java - Apache HttpClient 会在所有 HTTP 5XX 错误上执行抛出 IOException 吗?

转载 作者:搜寻专家 更新时间:2023-11-01 01:25:38 25 4
gpt4 key购买 nike

Apache HttpClient docs对于 execute(HttpHost target, HttpRequest request) 方法说:

IOException - in case of a problem or the connection was aborted

如果我捕捉到 IOException,这会捕捉到 ALL Server 5xx Errors

try {
response = client.execute(httpHost, request);
} catch (IOException e) {
// throw custom Exception
} finally {
// close response and client
}

我问的原因是,在这个逻辑之后的其他地方,我们正在做类似以下的事情:

if (response.getStatusLine().getStatusCode() >= 500) {
// Could we ever reach this point after the code above?
}

最佳答案

不,HttpClient 不会为任何 500/5xx 响应抛出 IOException

IOException在低级别连接失败(例如无效的主机名、没有服务器监听)或 TCP 管道异常中断(例如互联网连接丢失)时发生。

“HTTP 500”是服务器响应 - 有效 服务器响应 - 指示错误情况。它具有状态代码、 header 和正文,这是 200 响应的所有内容。

文档说返回值是“对请求的[最终]响应”;只要服务器能够返回有效响应,无论状态代码如何,都是如此。

关于java - Apache HttpClient 会在所有 HTTP 5XX 错误上执行抛出 IOException 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32434947/

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