Mam prostą klasę napisaną w Android Studio:
package com.mysite.myapp;
import org.apache.http.client.HttpClient;
public class Whatever {
public void headBangingAgainstTheWallExample () {
HttpClient client = new DefaultHttpClient();
}
}
i z tego otrzymuję następujący błąd czasu kompilacji:
Cannot resolve symbol HttpClient
Nie jest HttpClient
dołączony do zestawu SDK Android Studio? Nawet jeśli nie jest, dodałem go do mojej wersji Gradle w następujący sposób:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:23.0.0'
compile 'org.apache.httpcomponents:httpclient:4.5'
}
Z ostatnią linią kompilacji lub bez niej błąd jest taki sam. czego mi brakuje?
AndroidHttpClient
jeśli możesz. Pliki pośredniczące HttpClient są rzeczywiście zawarte w słoiku z systemem Android, więc nie powinno być potrzeby jawnego odwoływania się do niego. Pamiętaj, że wersja httpclient dla Androida to prawdopodobnie 4.1.1. Próba użycia nowszej wersji zwykle powoduje problemy (czytaj: nie działa, ponieważ moduł ładujący oprogramowanie układowe zawsze wygrywa).Odpowiedzi:
HttpClient
nie jest już obsługiwany w SDK 23. Musisz użyćURLConnection
lub zmienić wersję na SDK 22 (compile 'com.android.support:appcompat-v7:22.2.0'
)Jeśli potrzebujesz SDK 23, dodaj to do swojej oceny:
Możesz także spróbować pobrać i włączyć jar HttpClient bezpośrednio do swojego projektu lub zamiast tego użyć OkHttp
źródło
android { useLibrary 'org.apache.http.legacy' }
[po dodaniu tego] [1] 'org.apache.http' android-studio nadal ma wskazówki: „Nie można rozwiązać symbolu” [2], dzięki czemu android-studio (z sdk23) może budować. chociaż istnieją wskazówki (nie można rozwiązać symbolu) [3], jeśli dodasz jar, nie ma żadnych wskazówek, można zbudować, ale !!! nie można uruchomić, ponieważ ma dwie kopie „org.apache.http”Volley
biblioteki, pamiętaj, że to dodanie wiersza stopni powinno przejść do pliku ocen dla biblioteki, a nie do Twojej aplikacji. Działa świetnie! Wielkie dzięki!HttpClient został uznany za przestarzały na poziomie API 22 i usunięty na poziomie API 23. W dalszym ciągu można go używać na poziomie API 23 i nowszych, jeśli jest to konieczne, jednak najlepiej jest przejść na obsługiwane metody obsługi HTTP. Jeśli więc kompilujesz z 23, dodaj to do swojego build.gradle:
źródło
android { useLibrary 'org.apache.http.legacy' }
[po dodaniu tego] [1] 'org.apache.http' android-studio nadal ma wskazówki: „Nie można rozwiązać symbolu” [2], dzięki czemu android-studio (z sdk23) może budować. chociaż istnieją wskazówki (nie można rozwiązać symbolu) [3], jeśli dodasz jar, nie ma żadnych wskazówek, można zbudować, ale !!! nie można uruchomić, ponieważ ma dwie kopie „org.apache.http”Odpowiedź TejaDroid w poniższym linku pomogła mi. Nie można zaimportować org.apache.http.HttpResponse w Android Studio
źródło
Aby użyć Apache HTTP dla SDK poziomu 23:
Najwyższy poziom build.gradle - /build.gradle
Powiadomienie ze studia Android o aktualizacji stopni:
Specyficzny dla modułu build.gradle - /app/build.gradle
źródło
Wypróbuj to działało dla mnie Dodaj tę zależność do pliku build.gradle
źródło
1- pobierz pliki jar Apache (od tej odpowiedzi) 4.5.zip plik z:
https://hc.apache.org/downloads.cgi?Preferred=http%3A%2F%2Fapache.arvixe.com%2F
2- otwórz zip skopiuj pliki jar do swojego folderu libs. Możesz go znaleźć, jeśli przejdziesz na górę projektu, gdzie jest napisane „Android”, po kliknięciu znajdziesz listę. Więc,
, Następnie umieść tam słoiki.
3- W build.gradle (moduł: aplikacja) dodaj
w
4- W klasie Java dodaj te importy:
źródło
HttpClient nie jest już obsługiwany w sdk 23. Wersja Androida 6.0 (API Level 23) usuwa obsługę klienta HTTP Apache. Musisz użyć
a także dodaj poniższy fragment kodu do swojej zależności:
// Ostateczne rozwiązanie http dla usługi internetowej (w tym przesyłanie plików)
Pomoże Ci również podczas korzystania z funkcji MultipartEntity do przesyłania plików .
źródło
w API 22 stają się przestarzałe, a w API 23 całkowicie je usunęły. Prostym obejściem, jeśli nie potrzebujesz wszystkich wymyślnych rzeczy z nowych dodatków, jest po prostu użycie plików .jar z apache, które zostały zintegrowane przed API 22, ale jako oddzielne pliki .jar:
źródło
Jeśli chcesz zaimportować niektóre klasy, takie jak:
Możesz dodać następujący wiersz w build.gradle (zależności Gradle)
źródło
Możesz po prostu dodać to do zależności Gradle:
źródło
HttpGet
. Do tego użyłemcompile 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2'
Wersja Androida 6.0 (API Level 23) usuwa obsługę klienta HTTP Apache. Dlatego nie można używać tej biblioteki bezpośrednio w API 23. Istnieje jednak sposób na jej wykorzystanie. Dodaj useLibrary „org.apache.http.legacy” w pliku build.gradle, jak poniżej-
Jeśli to nie zadziała, możesz zastosować następujący hack-
- Skopiuj plik org.apache.http.legacy.jar znajdujący się w katalogu / platform / android-23 / opcjonalną ścieżkę katalogu zestawu SDK systemu Android do folderu aplikacji / libs projektu.
- Teraz dodaj pliki kompilacji („libs / org.apache.http.legacy.jar”) w sekcji zależności {} pliku build.gradle.
źródło
Klient ApacheHttp został usunięty z SDK v23. Możesz użyć HttpURLConnection lub klienta HTTP innej firmy, takiego jak OkHttp.
ref:
https://developer.android.com/preview/behavior-changes.html#behavior-apache-http-client
źródło
HttpUrlConnection
jest faktycznie zalecane zamiast HttpClientPo prostu użyj tego: -
źródło
HttpClient nie jest obsługiwany w SDK 23 i 23+.
Jeśli potrzebujesz użyć do SDK 23, dodaj poniższy kod do swojej klasy:
To działa dla mnie. Mam nadzieję, że ci się przyda.
źródło
Jeśli potrzebujesz SDK 23, dodaj to do swojej oceny:
źródło
Musisz dodać tylko jedną linię
na przykład w build.gradle (moduł: aplikacja)
źródło
Który cel API masz w swoim projekcie?
AndroidHttpClient
dotyczy tylko interfejsu API poziomu 8 <. i proszę zajrzyj tutajbaw się dobrze :)
źródło
Jak wspomniano wcześniej,
org.apache.http.client.HttpClient
nie jest już obsługiwany w:SDK (poziom API) # 23.
Musisz użyć
java.net.HttpURLConnection
.Jeśli chcesz, aby Twój kod (i życie) łatwiejsze przy użyciu
HttpURLConnection
, tutaj jestWrapper
tej klasy, który pozwoli Ci wykonywać proste operacje zGET
,POST
iPUT
używającJSON
, jak na przykład robiHTTP PUT
.Możesz go używać.
źródło
Dodaj te dwa wiersze w zależnościach
następnie
pod Androidem
źródło
Wklej plik .jar do „folderu libs” w swoim projekcie. Następnie stopniowo dodaj tę linię do swojego build.gradle (moduł: aplikacja)
źródło
Błąd: (30, 0) Nie znaleziono metody Gradle DSL: „classpath ()” Możliwe przyczyny:
źródło
Dla Androida API 28 i wyższych w Manifest.xml wewnątrz znacznika aplikacji
źródło
Myślę, że w zależności od posiadanej wersji Androida Studio, ważne jest, aby zaktualizować również swoje studio Android, byłem też sfrustrowany postępowaniem zgodnie z radami wszystkich, ale bez powodzenia, dopóki nie musiałem zaktualizować mojej wersji Androida z 1.3 do 1.5, błędy zniknęły jak magia.
źródło