在Android Studio中无法导入org.apache.http.HttpResponse

32

我想在Android Studio中使用这些库:

import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;

我正在跟随一个视频教程,其中导师使用的是Eclipse,所以我知道它可以工作。

但是我需要在Android Studio中添加哪些额外的东西/库才能使用它们?


你在 gradle 文件中有相应的依赖吗? - dazito
6个回答

66

HttpClient在SDK 23中已被弃用.

您需要转移到URLConnection或将SDK降级到22。

尽管如此,如果您更新gradle SDK至23,仍需要使用HttpClient。

您必须在app/gradle中添加HttpClient的依赖项。

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

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

1
如果你正在使用异步HTTP库和SDK 23,那么你需要遵循@TejaDroid的答案。 - NOT_A_PROGRAMMER
1
将其添加到app/gradle中。 - Eyal Sooliman
但在编译“com.android.support:appcompat-v7:23.0.1”时出现了错误。 - garima
@garima,我认为buildToolsVersion和编译库版本需要相同。也就是说,如果你的buildToolsVersion23.0.2,那么使用appcompat版本23.0.2 - TejaDroid

42

在Android 5.1中,HttpClient已经被弃用,在Android 6.0中也从Android SDK中删除了。虽然有一种解决方法可以继续在Android 6.0中使用Android Studio中的HttpClient,但您真的需要转移到其他方案。这个“其他方案”可以是:

或者,根据您的HTTP工作性质,您可能会选择支持高阶操作的库(例如,用于Web服务API的Retrofit)。

在紧急情况下,您可以启用旧版API,通过在模块的build.gradle文件中的android闭包中添加useLibrary'org.apache.http.legacy'来实现。但是,多年来,Google一直建议人们停止使用Android内置的HttpClient,因此最多只能作为过渡措施,而您需要在更长期的时间内转移到另一个API上。


24

主要的build.gradle文件 - /build.gradle

buildscript {
    ...
    dependencies {
        classpath 'com.android.tools.build:gradle:1.3.1' 
        // Versions: http://jcenter.bintray.com/com/android/tools/build/gradle/
    }
    ...
}

特定于模块的 build.gradle - /app/build.gradle

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.1"
    ...
    useLibrary 'org.apache.http.legacy'
    ...
}

我们不应该修改“Main build gradle”,对吧?无论如何,我在app/build/gradle中插入了一行代码:useLibrary 'org.apache.http.legacy',这对我来说很有效。 - Edess Elder

3
根据Apache网站的说明,如果您使用的是Android API 23或更高版本,则需要包含以下Gradle依赖项:
dependencies {
    compile group: 'cz.msebera.android' , name: 'httpclient', version: '4.4.1.1'
}

来源: https://hc.apache.org/httpcomponents-client-4.5.x/android-port.html

该文档介绍了如何使用 Apache HttpComponents 客户端库在 Android 平台上进行 HTTP 通信。本文也提供了一些有关最佳实践的建议和指导,以帮助您编写高效和可靠的 Android 应用程序。


0

如果你要开始开发,请使用Square的OkHttp,否则如果你需要保持之前的代码运行,则将遗留库添加到你的项目依赖项中:

dependencies {
    compile group: 'org.apache.httpcomponents' , name: 'httpclient-android' , version: '4.3.5.1'
}

-1
使用这个:-
compile 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2'

另一个答案已经包含了这个。https://dev59.com/kVwY5IYBdhLWcg3wq5bl#32649055 - OneCricketeer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接