代码之家  ›  专栏  ›  技术社区  ›  Robert

Android DefaultHttpClient默认超时

  •  4
  • Robert  · 技术社区  · 12 年前

    我的问题是,如果我没有指定,那么使用DefaultHttpClient发出的请求的默认超时是多少。

    所以如果没有这样的代码

    HttpParams my_httpParams = new BasicHttpParams();
    HttpConnectionParams.setConnectionTimeout(my_httpParams, 3000);
    HttpConnectionParams.setSoTimeout(my_httpParams, 1);
    

    但只是

    HttpParams params = new BasicHttpParams();
            HttpProtocolParams.setContentCharset(params,
                    HTTP.DEFAULT_CONTENT_CHARSET);
    ClientConnectionManager cm = new ThreadSafeClientConnManager(params,
                    schemeRegistry);
    SchemeRegistry schemeRegistry = new SchemeRegistry();
            schemeRegistry.register(new Scheme("http", PlainSocketFactory
                    .getSocketFactory(), 80));
    return new DefaultHttpClient(cm, params);
    

    此httpClient将等待服务器响应多长时间?

    2 回复  |  直到 12 年前
        1
  •  4
  •   Saifuddin Sarker    12 年前

    据我所知,默认情况下,DefaultHttpClient的连接超时和套接字超时都为null(或零),这意味着不使用超时,理论上Android应用程序将永远等待连接和套接字响应完成。因此,强烈建议在使用DefaultHttpClient时提供新的连接和套接字超时。

        2
  •  0
  •   Joseph Helfert    12 年前

    我在源头上做了一些窥探,发现了这两种方法。所以看起来它们默认为0。

    /**
     * Obtains value of the {@link CoreConnectionPNames#CONNECTION_TIMEOUT}
     * parameter. If not set, defaults to <code>0</code>.
     *
     * @param params HTTP parameters.
     * @return connect timeout.
     */
    public static int getConnectionTimeout(final HttpParams params) {
        if (params == null) {
            throw new IllegalArgumentException("HTTP parameters may not be null");
        }
        return params.getIntParameter
            (CoreConnectionPNames.CONNECTION_TIMEOUT, 0);
    }
    
    /**
     * Obtains value of the {@link CoreConnectionPNames#SO_TIMEOUT} parameter.
     * If not set, defaults to <code>0</code>.
     *
     * @param params HTTP parameters.
     * @return SO_TIMEOUT.
     */
    public static int getSoTimeout(final HttpParams params) {
        if (params == null) {
            throw new IllegalArgumentException("HTTP parameters may not be null");
        }
        return params.getIntParameter(CoreConnectionPNames.SO_TIMEOUT, 0);
    }