【问题标题】:How can I use the latest HttpComponents version on Android?如何在 Android 上使用最新的 HttpComponents 版本?
【发布时间】:2011-03-01 12:17:01
【问题描述】:

我使用的是 Android 自带的 HttpComponents 库。我编写了 2 个类来使用 GET 和 POST 发送参数并从服务器接收 InputStream 或 String。一切正常:线程上的每次下载、开始、暂停、恢复...但是今天我同时开始了两次下载,但都没有完成。

我用谷歌搜索了一个解决方案,我发现 Android 带有 HttpCore 4.0-beta2。是的,它很老了。它于 2008 年 7 月 1 日发布,从那时起 Android 就没有对其进行更新...

我已经重写了我的类,但现在使用 HttpURLConnection,我可以同时下载两个文件。

好的,如果您正在考虑在 Android 上使用 HttpComponents,这对您来说是一个警告。现在我的问题。我想将新版本 4.1 导入我的项目。我已将 jars 添加到构建路径中,但现在如果新 (4.1) 和旧 (beta2, 4.0) 软件包相同,我该如何使用这些 jars?

谢谢。

已解决
您必须使用 ThreadSafeClientConnManager 创建 DefaultHttpCLinet:

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");

More info

【问题讨论】:

    标签: java android http apache-httpcomponents


    【解决方案1】:

    但是今天我同时开始了两个下载,没有一个完成。

    因为 HttpClient 默认不是线程安全的。您必须为此连接ThreadSafeClientConnManager。这在HttpClient 文档中有介绍。

    我在 Google 上搜索了一个解决方案,发现 Android 带有 HttpCore 4.0-beta2。是的,它很老了。它于 2008 年 7 月 1 日发布,从那时起 Android 就没有更新它......而且它是 BUGGED

    https://android.googlesource.com/platform/external/apache-http

    请注意,自“2008 年 7 月 1 日”以来有不少提交。

    我已经重写了我的类,但现在使用 HttpURLConnection,我可以同时下载两个文件。

    大多数程序员也可以使用 HttpClient 来做到这一点。

    如果新的 (4.1) 和旧的 (beta2, 4.0) 包相同,我该如何使用这些 jar?

    你不能。

    【讨论】:

    • 谢谢,但您提供的示例是针对 4.1 版本的。解决方案在我的帖子中。
    猜你喜欢
    • 2016-07-02
    • 2015-04-09
    • 1970-01-01
    • 2021-04-04
    • 2021-01-23
    • 1970-01-01
    • 2022-01-03
    相关资源
    最近更新 更多