我使用默认 HttpClient 有问题。
如果我同时执行一些请求到同一个服务器( & gt; 2), 它将会挂上( 将没有收到回复) 。 所有接下来的请求也将挂上 。
Here is the code.
public class ConnectionService {
// Should be called once with application context
public static void initWithContext(Context ctx) {
// Creating custom multithread connection manager to handle multiple simultaneous requests
HttpParams params = new BasicHttpParams();
SchemeRegistry schemeRegistry = new SchemeRegistry();
schemeRegistry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
ClientConnectionManager cm = new ThreadSafeClientConnManager(params, schemeRegistry);
ConnManagerParams.setMaxTotalConnections(params, 200);
ConnPerRoute cpr = new ConnPerRoute() {
@Override
public int getMaxForRoute(HttpRoute httpRoute) {
return 50;
}
};
ConnManagerParams.setMaxConnectionsPerRoute(params, cpr);
httpClient = new DefaultHttpClient(cm, params);
httpClient.setCookieStore(new PersistentCookieStore(ctx));
}
static private DefaultHttpClient httpClient = null;
private JsonExecutorInterface requestExecutorForRelativePathAndParams(String path, WebParams params) throws UnsupportedEncodingException {
HttpPost postRequest = new HttpPost(rootUrl.toString() + path);
if(params != null) {
postRequest.setEntity(params.getFormEntity());
}
JsonExecutorProxy executor = new JsonExecutorProxy();
executor.setRequest(postRequest);
executor.setErrorsHandlerDelegate(this);
return executor;
}
}