Android HttpConnectionParams.setConnectionTimeout不工作?

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

安卓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 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);
}

对我没有影响。