我使用Android自带的HttpComponents库。我写了2个类,用GET和POST发送参数,并从服务器接收InputStream或String。所有工作都很好:每次下载一个线程,开始,暂停,恢复......但是今天我已经同时开始了两个下载并且没有一个完成。
我使用了一个解决方案,我已经看到Android自带了HttpCore 4.0-beta2。是的,这是非常古老的。它于2008年7月1日发布,从那时起Android没有更新它...
我已经重写了我的类,但现在使用HttpURLConnection,我可以同时下载两个文件。
好吧,如果您正在考虑在Android上使用HttpComponents,那是一个警告。现在我的问题。我想将新版本4.1导入到我的项目中。我已经将罐子添加到构建的路径,但现在如果新(4.1)和旧(beta2,4.0)软件包相同,如何使用这些罐子?
谢谢。
解决
你必须创建一个ThreadSafeClientConnManager的DefaultHttpCLinet:如何在Android上使用最新的HttpComponents版本?
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);
UPDATE:您还可以使用AndroidHttpClient。有了这个类,你不需要使用ThreadSafeClientConnManager
AndroidHttpClient client = AndroidHttpClient.newInstance ("Android");
谢谢,但你提供的例子是4.1版本。解决方案在我的帖子中。 – 2011-03-01 13:28:53