Szukałem wszędzie, ale nie mogłem znaleźć odpowiedzi, czy istnieje sposób, aby złożyć proste żądanie HTTP? Chcę poprosić o stronę / skrypt PHP na jednej z moich stron, ale nie chcę pokazywać strony.
Jeśli to możliwe, chcę to zrobić nawet w tle (w BroadcastReceiver)
android
httpwebrequest
androidhttpclient
Mats Hofman
źródło
źródło
Odpowiedzi:
AKTUALIZACJA
To bardzo stara odpowiedź. Zdecydowanie nie będę już polecał klienta Apache. Zamiast tego użyj:
Oryginalna odpowiedź
Po pierwsze, poproś o pozwolenie na dostęp do sieci, dodaj następujące elementy do swojego manifestu:
Najprostszym sposobem jest użycie klienta HTTP Apache w pakiecie z Androidem:
Jeśli chcesz, aby działał w osobnym wątku, polecam rozszerzenie AsyncTask:
Następnie możesz złożyć wniosek:
źródło
chyba że masz wyraźny powód, aby wybrać klienta Apache HttpClient, powinieneś wybrać java.net.URLConnection. w sieci można znaleźć wiele przykładów tego, jak go używać.
poprawiliśmy również dokumentację Androida od czasu twojego oryginalnego postu: http://developer.android.com/reference/java/net/HttpURLConnection.html
i rozmawialiśmy o kompromisach na oficjalnym blogu: http://android-developers.blogspot.com/2011/09/androids-http-clients.html
źródło
Uwaga: klient HTTP Apache w pakiecie z Androidem jest teraz przestarzały na korzyść HttpURLConnection . Więcej informacji można znaleźć na blogu programistów Androida .
Dodaj
<uses-permission android:name="android.permission.INTERNET" />
do swojego manifestu.Następnie pobierz stronę internetową w następujący sposób:
Sugeruję również uruchomienie go w osobnym wątku:
Więcej informacji na temat obsługi odpowiedzi i żądań POST można znaleźć w dokumentacji .
źródło
readStream
nie jest nawet zdefiniowany.Najprostszym sposobem jest użycie biblioteki Android o nazwie Volley
Możesz wysłać żądanie http / https tak proste:
W takim przypadku nie musisz sam „uruchamiać się w tle” ani „używać pamięci podręcznej”, ponieważ wszystko to zostało już wykonane przez Volley.
źródło
pozdrowienia
źródło
Z wątkiem:
źródło
Zrobiłem to, aby usługa internetowa wymagała adresu URL za pomocą biblioteki Gson:
Klient:
źródło
Spójrz na tę niesamowitą nową bibliotekę, która jest dostępna za pośrednictwem gradle :)
build.gradle:
compile 'com.apptakk.http_request:http-request:0.1.2'
Stosowanie:
https://github.com/erf/http-request
źródło
Użyj Volley'a jak wyżej. Dodaj następujące elementy do build.gradle (moduł: aplikacja)
Dodaj następujące do pliku AndroidManifest.xml:
I dodaj następujące kod aktywności:
Zastępuje klienta HTTP i jest bardzo prosty.
źródło
To jest nowy kod dla żądania HTTP Get / POST w Androidzie.
HTTPClient
jest osłabiony i może nie być dostępny tak jak w moim przypadku.Najpierw dodaj dwie zależności w build.gradle:
Następnie wpisz ten kod
ASyncTask
wdoBackground
metodzie.źródło
Dla mnie najprostszym sposobem jest użycie biblioteki o nazwie Retrofit2
Musimy tylko stworzyć interfejs zawierający naszą metodę żądania, parametry, a także możemy utworzyć niestandardowy nagłówek dla każdego żądania:
A najlepsze jest to, że możemy to zrobić asynchronicznie łatwo za pomocą metody kolejkowania
źródło
Ponieważ żadna z odpowiedzi nie opisywała sposobu wykonywania żądań za pomocą OkHttp , który jest obecnie bardzo popularnym klientem http dla Androida i Java, podam prosty przykład:
Niewątpliwą zaletą tej biblioteki jest to, że oddziela nas ona od pewnych szczegółów niskiego poziomu, zapewniając bardziej przyjazne i bezpieczne sposoby interakcji z nimi. Składnia jest również uproszczona i pozwala pisać niezły kod.
źródło