【发布时间】:2020-07-29 19:03:25
【问题描述】:
我在我的 java 代码中使用 HttpClient 4.3.6 进行 POST HTTP 调用。我在通话后收到 504 网关超时错误,因此我使用以下 2 种方法设置了连接超时:
1--------
RequestConfig requestConfig =
RequestConfig.custom().setConnectTimeout(180 * 1000).build();
final HttpClient httpClient =
HttpClientBuilder.create().setDefaultRequestConfig(requestConfig).build();
final HttpClient httpClient = HttpClientBuilder.create().build();
final HttpPost postRequest = new HttpPost(utility.getUrl());
2---------
final HttpClient httpClient = HttpClientBuilder.create().build();
final HttpPost postRequest = new HttpPost(utility.getUrl());
RequestConfig rc = RequestConfig.DEFAULT;
RequestConfig requestConfig =
RequestConfig
.copy(rc)
.setSocketTimeout(180 * 1000)
.setConnectTimeout(180 * 1000)
.setConnectionRequestTimeout(180 * 1000)
.build();
postRequest.setConfig(requestConfig);
在尝试上述方法超时 3 分钟后,如果 POST 响应超过 1 分钟,我会收到 504 超时。不是等到3分钟。请告诉我这里是否做错了。
【问题讨论】:
-
如果你得到状态码 504 - 那么问题肯定不在客户端
-
确实如此。如果客户端得到anything,则客户端没有问题,如果客户端得到
504 Gateway timeout,则压倒性的preseumtpion是问题出在网关或上游。
标签: java httpclient apache-httpclient-4.x