Android HttpConnectionParams.setConnectionTimeout不工作?
安卓4.1.2 我为从Internet web服务器获取json编写了一些代码Android HttpConnectionParams.setConnectionTimeout不工作?,android,Android,安卓4.1.2 我为从Internet web服务器获取json编写了一些代码 HttpParams params = new BasicHttpParams(); HttpConnectionParams.setConnectionTimeout(params, 4000); // 4 sec HttpConnectionParams.setSoTimeout(params, 1000); // 1 sec HttpClient client = new De
HttpParams params = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(params, 4000); // 4 sec
HttpConnectionParams.setSoTimeout(params, 1000); // 1 sec
HttpClient client = new DefaultHttpClient(params);
HttpGet httpGet = new HttpGet(url);
httpGet.setParams(params);
try {
HttpResponse response = client.execute(httpGet);
StatusLine statusLine = response.getStatusLine();
int statusCode = statusLine.getStatusCode();
if (statusCode == HttpStatus.SC_OK) {
HttpEntity entity = response.getEntity();
InputStream content = entity.getContent();
BufferedReader reader = new BufferedReader(
new InputStreamReader(content));
String line;
while ((line = reader.readLine()) != null) {
builder.append(line);
}
} else {
Log.message("Download fail");
}
} catch (Exception e) {
// request new address for object
// creating new object is a faster then setLength(0)
builder = new StringBuilder();
}
return builder.toString();
但连接超时不等于4秒。应用程序正在等待30秒。我哪里弄错了?看来
HttpConnectionParams.setSoTimeout()
是错误的。我不确定这是否会对您有所帮助,但这是一个主要有效的解决方法:
private static final int CONNECTION_TIMEOUT = 5000; // Timeout until a connection is established
private static final int SOCKET_TIMEOUT = 5000; // Timeout for waiting for data
private static final long MCC_TIMEOUT = 5000;
HttpGet httpGet = new HttpGet(url);
setTimeouts(httpGet.getParams());
private static void setTimeouts(HttpParams params) {
params.setIntParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, CONNECTION_TIMEOUT);
params.setIntParameter(CoreConnectionPNames.SO_TIMEOUT, SOCKET_TIMEOUT);
params.setLongParameter(ConnManagerPNames.TIMEOUT, MCC_TIMEOUT);
}
对我没有影响。