我有一个简单的类写在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'
}

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


当前回答

HttpClient在API Level 22中已弃用,并在API Level 23中被移除。如果你必须,你仍然可以在API级别23及以上使用它,但是最好转移到受支持的方法来处理HTTP。所以,如果你用23编译,在build.gradle中添加这个:

android {
    useLibrary("org.apache.http.legacy")
}

其他回答

如果你想导入一些类,比如:

import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient; 
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;

您可以在构建中添加以下行。gradle (gradle依赖项)

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:27.1.0'
    implementation 'com.android.support:support-v4:27.1.0'

    .
    .
    .

    implementation 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2'

}

你的项目中有哪个API目标?androidhttpclient仅适用于API级别8 <。 请看这里

享受你的代码:)

你可以简单地将它添加到Gradle依赖项中:

compile "org.apache.httpcomponents:httpcore:4.3.2"

HttpClient在sdk 23和23+中不支持。

如果你需要使用到sdk 23,添加以下代码到你的gradle:

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

这对我很有用。希望对你有用。

如果你需要sdk 23,把这个添加到你的gradle:

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