我有这个静态函数,它基本上与网页建立连接,连同它一起发送发布数据并返回接收到的响应(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,所以这也没有用(或者我错了?)
路径和信息的数据都是正确的,测试它。我的服务器也没有问题。
有人说它可以是您的网络,但我今天在 3 个 wifi 网络上进行了测试。奇怪的是,在我的移动提供商的互联网连接上,它没有或几乎没有发生。
我在一个答案中读到这可能是因为 ISP 更改了标头信息。我尝试为用户代理使用不同的值,但这也不起作用。
我希望有人能提供帮助,为此我将不胜感激,因为这种情况不断发生让我感到非常沮丧。