Android Studio中无法导入HttpClient

384

我有一个在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 build中:

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

无论是否有最后一行编译代码,错误都是相同的。我错过了什么?


4
如果可以的话,请尝试使用AndroidHttpClient。Android版的HttpClient存根确实包含在android jar中,因此通常不需要明确引用它。请注意,android版的httpclient可能是4.1.1版本。试图在其基础上使用更新版本通常会导致问题(即:无法工作,因为固件类加载器始终获胜)。 - dhke
重复 https://dev59.com/a1wY5IYBdhLWcg3w2Kwv#32157466. - straya
25个回答

2
请在依赖项下添加以下两行代码。
compile 'org.apache.httpcomponents:httpcore:4.4.1'
compile 'org.apache.httpcomponents:httpclient:4.5'

然后
useLibrary 'org.apache.http.legacy'

在安卓系统下

0

针对 Android API 28 及更高版本,在 Manifest.xml 文件中的 application 标签内

    <application
    .
    .
    .

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

0

错误:(30,0)Gradle DSL方法未找到:'classpath()' 可能的原因:

  • 项目“cid”可能正在使用不包含该方法的Android Gradle插件版本(例如1.1.0中添加了'testCompile')。 升级插件到版本2.3.3并同步项目
  • 项目“cid”可能正在使用不包含该方法的Gradle版本。 打开Gradle包装文件
  • 构建文件可能缺少Gradle插件。 应用Gradle插件

  • 0

    我曾经遇到过同样的问题,我移除了httpcclient库并添加了下面提到的代码行,然后它开始工作了。这个库似乎包含了httpclient类的封装。

    implementation("net.sourceforge.htmlunit:htmlunit-android:2.63.0")
    

    -1

    我认为根据你使用的Android Studio版本,更新你的Android Studio也很重要。我也曾经遵循大家的建议但是没有成功,直到我将我的Android版本从1.3升级到1.5,错误就像魔术一样消失了。


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