2015-09-01 28 views
30

Chcę używać tych bibliotek w Android Studio:Nie można importować org.apache.http.HttpResponse w 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; 

śledzę tutorial wideo, w której nauczyciel jest przy użyciu Eclipse więc wiem to działa.

Ale jakie dodatkowe rzeczy/biblioteki muszę dodać do Android Studio, aby z nich skorzystać?

+0

Czy masz zależności w pliku Gradle? – dazito

Odpowiedz

38

HttpClient został wycofany w systemie Android 5.1 i został usunięty z zestawu Android SDK w systemie Android 6.0. Chociaż istnieje a workaround to continue using HttpClient in Android 6.0 with Android Studio, naprawdę musisz przejść do czegoś innego. Że "coś innego" może być:

Albo, w zależności ze względu na charakter pracy HTTP można wybrać bibliotekę obsługującą operacje wyższego rzędu (np. Retrofit dla interfejsów API usług sieci Web).

W mgnieniu oka można włączyć starsze interfejsy API, poprzez zamknięcie useLibrary 'org.apache.http.legacy' w swoim android w pliku modułu build.gradle. Jednak Google od lat doradza ludziom, aby przestali korzystać z wbudowanego HttpClient na Androidzie, a więc co najwyżej powinno to być działanie z dystansem, podczas gdy pracujemy na bardziej trwałym przejściu na inny interfejs API.

+0

Oto zaktualizowany [link do obejścia] (https://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-apache-http-client) – Miguelos

+0

@Miguelos: Edytowałem odpowiedź na ten zaktualizowany link - dzięki! – CommonsWare

61

HttpClient jest przestarzałe w sdk 23.

Musisz się przenieść na URLConnection lub SDK w dół do 22

Wciąż trzeba HttpClient z aktualizacji Gradle SDK 23

Trzeba dodać zależnościami HttpClient w app/Gradle jak

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

Osoby korzystające z asynchronicznej biblioteki HTTP i SDK 23, Należy wykonać odpowiedź @TejaDroid. –

+1

Dodaj to do aplikacji/gradle –

+0

To działa, dziękuję – garima

23

główna 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/ 
    } 
    ... 
} 

Moduł specyficzny dla build.gradle -/app/build.Gradle

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

Nie należy modyfikować "Głównej gradacji". dobrze?? W każdym razie wstawiłem wiersz: useLibrary "org.apache.http.legacy" w aplikacji/build/gradle i działa dobrze dla mnie. –

0

w przypadku, gdy zaczną rozwój, przejdź fot OkHttp od placu, w przeciwnym razie, jeśli chcesz zachować swój poprzedni uruchomiony kod, a następnie dodać starszej biblioteki do zależności projektowych:

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

Użyj tego: -

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

Inna odpowiedź zawiera już tę. http://stackoverflow.com/a/32649055/2308683 –

Powiązane problemy