2015-07-10 12 views
12

Testuję Voll's HurlStack w Android M Developer Preview.Volley w podglądzie deweloperów Android M: org.apache.http nie można rozwiązać

Po zmianie compileSdkVersion z 22 do 'android-MNC' wszystkie klasy od org.apache.http nie są kompilowane:

import org.apache.http.Header; 
import org.apache.http.HttpEntity; 
import org.apache.http.HttpResponse; 
import org.apache.http.ProtocolVersion; 
import org.apache.http.StatusLine; 
import org.apache.http.entity.BasicHttpEntity; 
import org.apache.http.message.BasicHeader; 
import org.apache.http.message.BasicHttpResponse; 
import org.apache.http.message.BasicStatusLine; 

Jak mogę zmodyfikować moje kod, aby rozwiązać ten problem?

Wiem, że są pewne zmiany związane z klientem HTTP Apache, ale nadal nie działa, gdy postępuję zgodnie z instrukcjami, aby dodać useLibrary 'org.apache.http.legacy' w gradle.

referencyjny: HurlStack.java AOSP

Behavior Changes: Apache HTTP Client Removal

+0

Apache HttpClient została zaniechana na chwilę. Volley używa HttpClient na starych wersjach Androida, URLConnection w nowych wersjach. Możliwe, że usunęli razem httpclient z M podglądu. Błąd nie powinien wystąpić, gdy ustawisz minimalną wersję Androida na poziomie, na którym Volley używa metody URLConnection. – Christine

+1

lub możesz samodzielnie dołączyć httpClient. Podobnie jak tutaj: https://code.google.com/p/httpclientandroidlib/ – Christine

+0

@Christine Dziękuję za odpowiedź. Z https://developer.android.com/preview/setup-sdk.html sekcji "Zaktualizuj istniejący projekt" Google sugeruje, że parametr minSdkVersion powinien mieć wartość "MNC". Zastanawiam się, czy istnieje oficjalny sposób na ominięcie tego. – Song

Odpowiedz

4

Oficjalnymi „zachowanie zmiany” dokument states że klient HTTP Apache jest usuwany w Android M - nie przestarzałe, ale usunięte. Osobiście bardzo polecam przejście na OkHttp, który jest obecnie używany jako silnik HttpURLConnection od KitKat, dzięki zależności otrzymuje się wszystkie świeże gadżety bezpośrednio od zespołu Square.

0

Jeśli, tak jak ja, to jedyny powód, dla którego zostały w tym HttpClient dlatego, że testowali kody odpowiedzi HTTP.

if (error.networkResponse.statusCode == HttpStatus.SC_UNAUTHORIZED) {} 

następnie prosta poprawka jest tylko do korzystania z wersji stałych, które są w klasie HttpURLConnection:

if (error.networkResponse.statusCode == HttpURLConnection.HTTP_UNAUTHORIZED) {} 
+0

Należy jednak zauważyć, że nie wszystkie kody statusu HTTP są obecne w klasie HttpURLConnection. Na przykład nie ma już 307 tymczasowego przekierowania. – Mike

Powiązane problemy