我使用了Android自带的HttpComponents库。我编写了两个类来发送GET和POST参数,并从服务器接收InputStream或String。一切都很好:每个下载都在一个线程上,开始、暂停、恢复...但是今天我同时启动了两个下载,但它们都没有完成。
我搜索了解决方案,发现Android自带的HttpCore 4.0-beta2。是的,它非常老,发布于2008年7月1日,自那时以来Android就没有更新过它...
我已经重写了我的类,现在使用HttpURLConnection,可以同时下载两个文件。
好吧,如果你考虑在Android上使用HttpComponents,这是一个警告。现在我的问题是,我想将新版本4.1导入到我的项目中。我已经将jar添加到构建路径中,但是如果新版(4.1)和旧版(beta2、4.0)包相同,我该如何使用这些jar呢?
谢谢。
已解决
您需要使用ThreadSafeClientConnManager创建DefaultHttpClient:
我搜索了解决方案,发现Android自带的HttpCore 4.0-beta2。是的,它非常老,发布于2008年7月1日,自那时以来Android就没有更新过它...
我已经重写了我的类,现在使用HttpURLConnection,可以同时下载两个文件。
好吧,如果你考虑在Android上使用HttpComponents,这是一个警告。现在我的问题是,我想将新版本4.1导入到我的项目中。我已经将jar添加到构建路径中,但是如果新版(4.1)和旧版(beta2、4.0)包相同,我该如何使用这些jar呢?
谢谢。
已解决
您需要使用ThreadSafeClientConnManager创建DefaultHttpClient:
HttpParams parameters = new BasicHttpParams ();
HttpProtocolParams.setVersion (parameters, HttpVersion.HTTP_1_1);
HttpProtocolParams.setContentCharset (parameters, HTTP.UTF_8);
HttpProtocolParams.setUseExpectContinue (parameters, false);
ConnManagerParams.setMaxTotalConnections (parameters, MAX_CONNECTIONS);
SchemeRegistry schReg = new SchemeRegistry ();
schReg.register (new Scheme ("http", PlainSocketFactory.getSocketFactory (), 80));
client = new DefaultHttpClient (new ThreadSafeClientConnManager (parameters, schReg), parameters);
更新:您也可以使用AndroidHttpClient。使用此类,您无需使用ThreadSafeClientConnManager
AndroidHttpClient client = AndroidHttpClient.newInstance ("Android");