【问题标题】:Android Cannot access org.apache.http.client.HttpClientAndroid 无法访问 org.apache.http.client.HttpClient
【发布时间】:2015-10-06 02:05:04
【问题描述】:

我正在使用 android studio 创建一个向服务器发出 GET 请求的应用程序。我的代码是这样的:

import org.apache.http.client.methods.CloseableHttpResponse;  
import org.apache.http.client.methods.HttpGetHC4;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;

public class HTTPHelper
{
    private String base;

    public HTTPHelper (String base)
    {
        this.base = base;
    }

    public String doGet (String path)
    {
        try
        {
            CloseableHttpClient client = HttpClientBuilder.create().build();
            HttpGetHC4 get = new HttpGetHC4(path);
            CloseableHttpResponse response = client.execute(get);

            return "";
        }
        catch (Exception e)
        {
            return null;
        }
    }
}

问题是Android Studio标记了线

client.execute(get);

出现错误:

说“无法访问 org.apache.http.client.HttpClient”

这是我的 gradle 文件:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.0"

    defaultConfig {
        applicationId "principal.halloween"
        minSdkVersion 16
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:23.0.0'
    compile 'com.pubnub:pubnub-android:3.7.5'
    compile 'com.google.code.gson:gson:2.3.1'
    compile group: 'org.apache.httpcomponents' , name: 'httpclient-android' , version: '4.3.5.1'
    compile 'org.apache.httpcomponents:httpclient:4.3.6'

}

【问题讨论】:

标签: android apache android-studio get httpclient


【解决方案1】:

在 Android SDK 23 中

HttpClient 已被弃用,因为它推断,您可以在 HttpURLConnection 中迁移您的代码

https://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-apache-http-client

你可以用这个,但是不推荐了

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

对于HttpURLConnection

URL url = new URL(urlString);
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
connection.setRequestMethod("GET");
connection.setDoInput(true);
connection.connect();

【讨论】:

    【解决方案2】:

    这是因为 HttpClient 现在在 sdk 23 以后不再支持。尝试添加这个 在你的毕业典礼中。

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

    如果这不起作用,只需下载 HttpClient jar 文件并添加到您的库中。

    如果仍然无法正常工作,则必须将 compileSdkVersion 降级到 22 或更低。

    【讨论】:

    • 首先,你不要下载HttpClient,因为它也不起作用,你需要下载httpclient-android。编译组:'org.apache.httpcomponents',名称:'httpclient-android',版本:'4.3.5.1' compile('org.apache.httpcomponents:httpmime:4.3.6') {排除模块:'httpclient'}
    猜你喜欢
    • 2015-07-01
    • 1970-01-01
    • 2016-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-07
    相关资源
    最近更新 更多