Apache HttpClient Android (Gradle)

Я добавил эту строку в свой файл build.gradle

compile group: 'org.apache.httpcomponents' , name: 'httpclient-android' , version: '4.3.5'

и я хочу использовать MultipartEntityBuilder в своем коде. Однако студия Android не добавляет библиотеку в мой код. Может ли кто-нибудь помочь мне с этим?

Ответ 1

если вы используете целевой sdk как 23, добавьте ниже код в свой build.gradle

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

дополнительная заметка здесь: не пытайтесь использовать версии этих файлов gradle. они сломаны (28.08.15). Я попробовал более 5 часов, чтобы заставить его работать. это просто не делает. не работает:

compile 'org.apache.httpcomponents:httpcore:4.4.1'
compile 'org.apache.httpcomponents:httpclient:4.5'

другая вещь не:

'org.apache.httpcomponents:httpclient-android:4.3.5.1'

, ссылаясь на уровень 21 api.

Ответ 2

Принятый ответ мне кажется не совсем правильным. Нет смысла перетаскивать другую версию HttpMime, когда можно зависеть от той же самой версии.

compile group: 'org.apache.httpcomponents' , name: 'httpclient-android' , version: '4.3.5'
compile (group: 'org.apache.httpcomponents' , name: 'httpmime' , version: '4.3.5') {
    exclude module: 'org.apache.httpcomponents:httpclient'
}

Ответ 3

Попробуйте добавить это к своим зависимостям:

compile 'org.apache.httpcomponents:httpclient:4.4-alpha1'

И вообще, если вы хотите использовать библиотеку, и вы ищете строку зависимости Gradle, вы можете использовать Gradle Пожалуйста

EDIT: проверьте этот тоже.

Ответ 4

Никто из других не работал у меня. Мне пришлось добавить следующую зависимость, как описано здесь

compile group: 'cz.msebera.android' , name: 'httpclient', version: '4.4.1.1'

потому что я нацелился на API 23.

Ответ 5

Я решил проблему, добавив следующее в файл build.gradle

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

Однако это работает только в том случае, если вы используете gradle 1.3.0-beta2 или выше, поэтому вам придется добавить это к зависимостям buildscript, если вы находитесь в более низкой версии:

classpath 'com.android.tools.build:gradle:1.3.0-beta2'

Ответ 6

Я не знаю, почему, но (пока) httpclient может быть скомпилирован только как банку в каталог libs в вашем проекте. HttpCore отлично работает, когда он включен из mvn следующим образом:

dependencies {
      compile 'org.apache.httpcomponents:httpcore:4.4.3'
}

Ответ 7

Работа с зависимостью gradle

Попробуйте следующее:

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

Ответ 8

Я искал снова и снова, это решение работает как шарм::

    apply plugin: 'com.android.application'
    android {
        compileSdkVersion 25
        buildToolsVersion "25.0.3"
        defaultConfig {
            applicationId "com.anzma.memories"
            useLibrary 'org.apache.http.legacy'
            minSdkVersion 15
            targetSdkVersion 25
            versionCode 1
            versionName "1.0"
            testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        }
 packagingOptions {
            exclude 'META-INF/DEPENDENCIES.txt'
            exclude 'META-INF/LICENSE.txt'
            exclude 'META-INF/NOTICE.txt'
            exclude 'META-INF/NOTICE'
            exclude 'META-INF/LICENSE'
            exclude 'META-INF/DEPENDENCIES'
            exclude 'META-INF/notice.txt'
            exclude 'META-INF/license.txt'
            exclude 'META-INF/dependencies.txt'
            exclude 'META-INF/LGPL2.1'
        }
    buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
    }
    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        compile('org.apache.httpcomponents:httpmime:4.3.6') {
            exclude module: 'httpclient'
        }
        compile 'org.apache.httpcomponents:httpclient-android:4.3.5'
        compile 'com.android.support:appcompat-v7:25.3.1'
        testCompile 'junit:junit:4.12'
    }