我有一个简单的类写在Android Studio:

package com.mysite.myapp;

import org.apache.http.client.HttpClient;

public class Whatever {
    public void headBangingAgainstTheWallExample () {
        HttpClient client = new DefaultHttpClient();
    }
}

从这里我得到了以下编译时错误:

无法解析HttpClient符号

HttpClient不是包含在Android Studio SDK中吗?即使不是,我也像这样把它添加到我的Gradle构建中:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:23.0.0'
    compile 'org.apache.httpcomponents:httpclient:4.5'
}

不管有没有最后一个编译行,错误都是一样的。我错过了什么?


当前回答

Android 6.0 (API Level 23)版本删除了对Apache HTTP客户端的支持。因此你不能在API 23中直接使用这个库。但还是有办法利用它的。添加useLibrary ` org.apache.http。在你的构建中遗留'。Gradle文件如下-

android {
    useLibrary 'org.apache.http.legacy'
}

如果这没有工作,你可以应用以下黑客-

将Android SDK目录/platforms/ Android -23/optional路径下的org.apache.http.legacy.jar复制到项目的app/libs文件夹。

-现在在build的dependencies{}部分中添加编译文件(' libs/org.apache.http.legacy.jar ')。gradle文件。

其他回答

自2021年4月起,您可以使用以下方式:

在你的应用gradle中,在“dependencies{”下面添加以下内容:

implementation 'org.apache.httpcomponents:httpcore:4.4.10'
implementation 'org.apache.httpcomponents:httpclient:4.5.6'

在您的Java活动中,添加以下导入:

import org.apache.http.client.HttpClient;

然后,您应该能够将HttpClient添加到您的方法中。

ApacheHttp Client在v23 sdk中被移除。您可以使用HttpURLConnection或第三方Http客户端,如OkHttp。

参考:https://developer.android.com/preview/behavior-changes.html#behavior-apache-http-client

适用于android API 28及更高版本 在Manifest.xml应用程序标签内

    <application
    .
    .
    .

    <uses-library android:name="org.apache.http.legacy" android:required="false"/>

简单地使用这个:-

android {
         .
         .
         .
 useLibrary 'org.apache.http.legacy'
         .
         .
         .
          }

另一种方法是如果你有httpclient。jar文件你就可以 这样的:

将.jar文件粘贴到项目的“libs文件夹”中。然后在gradle中添加这一行到build.gradle(模块:app)

dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:23.0.0'
compile files('libs/httpcore-4.3.3.jar')
}