gpt4 book ai didi

java - DefaultHttpClient 超时设置为 10 秒但只需要 1 秒就超时

转载 作者:可可西里 更新时间:2023-11-01 16:34:38 25 4
gpt4 key购买 nike

我有这个静态函数,它基本上连接到网页,发送发布数据并返回收到的响应(JSON 对象)

我遇到的问题是,无论我设置什么超时,它通常只在尝试 1 秒时给出超时,而超时是 6 秒,这是不应该发生的。

public static String makeRequest(String path, String info) throws Exception 
{
HttpParams httpParameters = new BasicHttpParams();
int timeoutConnection = 6000;
HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection);
int timeoutSocket = 6000;
HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket);

DefaultHttpClient httpclient = new DefaultHttpClient(httpParameters);
HttpPost httpost = new HttpPost(path);
StringEntity jsonobj = new StringEntity(info);
httpost.setEntity(jsonobj);
httpost.setHeader("Accept", "application/json");
httpost.setHeader("Content-type", "application/json");
ResponseHandler responseHandler = new BasicResponseHandler();

String response = httpclient.execute(httpost, responseHandler);
return response;

现在我已经看到了一些类似的问题,但我找不到可以帮助我的答案。有人说这是因为它不是线程安全的,但是,我不会同时进行多个调用,它都是按顺序进行的。问题甚至在第一次尝试时发生,由于这个原因不应该发生,因为还没有多个连接/httpposts,更不用说来自不同的线程了。

不过最近确实经常发生,有时几天不发生,或者那几天才发生。

我试着查看 AndroidHttpClient,但它似乎不支持 HttpPost,所以这也没有用(或者我对此有误?)

path和info的数据都是正确的,测试过了。我的服务器也没有问题。

有人说它可能是你的网络,但我今天测试了 3 个 wifi 网络。奇怪的是,在我的移动提供商的互联网连接上,它没有或几乎没有发生。

我在一个答案中读到,这可能是因为 ISP 更改了 header 信息。我曾尝试为用户代理使用不同的值,但这也没有用。

我希望有人能提供帮助,对此我将不胜感激,因为这种情况不断发生让我感到非常沮丧。

最佳答案

如果 TCP 在超时期限之前检测到连接拒绝(即传入的 RST),则失败。在这种情况下等待超时是没有意义的,并且可以预料重试只会以同样的方式再次失败。超时是针对没有响应的情况。

关于java - DefaultHttpClient 超时设置为 10 秒但只需要 1 秒就超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10568113/

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