在我的 Web 应用程序中,我有一个全局静态 HttpClient 用于应用程序的许多部分。它是这样创建的:
MultiThreadedHttpConnectionManager connectionManager = new MultiThreadedHttpConnectionManager();
HttpConnectionManagerParams params = new HttpConnectionManagerParams();
params.setConnectionTimeout( 15000 );
params.setSoTimeout( 15000 );
connectionManager.setParams(params);
httpclient = new HttpClient(connectionManager);
HttpClientParams clientParams = new HttpClientParams();
clientParams.setParameter("http.protocol.allow-circular-redirects", true);
clientParams.setParameter("http.protocol.max-redirects", 4);
httpclient.setParams(clientParams);
对于大多数用例来说,超时都很好,但在特定的调用中,我想要更短的超时。所以我有:
GetMethod get = new GetMethod(finalUrl);
get.getParams().setParameter("http.socket.timeout", new Integer(1000));
get.getParams().setParameter("http.connection.timeout", new Integer(1000));
HttpClientUtil.getShortTimeoutInstance().executeMethod(get);
这没用。连接超时仍然是15000。我可以在GetMethod中设置特定的连接超时而不创建新的HttpClient实例(这是因为我认为创建一个新的HttpClient实例不是一个好主意)。