jel*_*ish 7 java networking android timeout http
我已经按照kuester2000的答案的说明,但我的超时设置似乎不起作用.
try
{
int timeout = 3000;
URL myURL = //some valid URL
AndroidHttpClient = AndroidHttpClient.newInstance("name");
HttpGet httpGet = new HttpGet(myURL.toExternalForm());
HttpParams httpParams = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParams, timeout);
HttpConnectionParams.setSoTimeout(httpParams, timeout);
HttpResponse response = httpClient.execute(httpGet);
//...
}
catch (SocketTimeoutException e)
{
e.printStackTrace();
}
catch (ConnectTimeoutException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
//...
Run Code Online (Sandbox Code Playgroud)
但是,超时值不会改变任何内容.
在我联系的答案中,它还说:
连接超时抛出"java.net.SocketTimeoutException:Socket未连接"和套接字超时"java.net.SocketTimeoutException:操作超时".
但我得不到.相反,我得到"org.apache.http.conn.ConnectTimeoutException:连接到...超时"
有人可以帮助我吗?哪里出错了?
您不使用httpParams
params,它们必须提供给HTTPClient.所以它不会像这样工作.在您链接的anwer中,订单是正确的!请尝试以下顺序:首先创建Params并将它们提供给HTTPClient.
HttpParams httpParameters = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParameters, 5000);
HttpConnectionParams.setSoTimeout(httpParameters, 10000);
HttpClient client = new DefaultHttpClient(httpParameters);
HttpGet request = new HttpGet(url);
HttpResponse response = client.execute(request);
Run Code Online (Sandbox Code Playgroud)
我确实错过了将params附加到我的http请求中,但在我的示例中执行此操作的正确方法是
httpGet.setParams(httpParams);
Run Code Online (Sandbox Code Playgroud)
在调用httpClient.execute(httpGet)之前.
刚添加该行,它工作正常.
小智 5
在客户端上设置的另一个选项:
AndroidHttpClient client = AndroidHttpClient.newInstance("Client V/1.0");
HttpConnectionParams.setConnectionTimeout(this.client.getParams(), 3000);
HttpConnectionParams.setSoTimeout(this.client.getParams(), 5000);
Run Code Online (Sandbox Code Playgroud)
这应该导致设置那些特定的参数...
HTH
归档时间: |
|
查看次数: |
24086 次 |
最近记录: |