Próbuję poprawić dokument Java HTML trochę, ale mam problemy z HttpUrlConntion
. Jedna rzecz jest taka, że niektóre serwery blokują żądanie, jeśli agent użytkownika jest maszyną wirtualną Java. Innym problemem jest to, że HttpUrlConnection
nie ustawia pola nagłówka Referrer
lub Location
. Ponieważ kilka witryn używa tych pól do sprawdzenia, czy treści były dostępne z ich własnej strony, jestem tu również zablokowany. O ile widzę, jedynym rozwiązaniem jest zastąpienie obsługi URL protokołu HTTP. Czy istnieje sposób modyfikowania domyślnego programu obsługi HTTP?Jak zmodyfikować nagłówek HttpUrlConnection
Odpowiedz
Otwórz URL
z URL.openConnection
. Opcjonalnie odlana do HttpURLConnection
. Zadzwoń pod numer URLConnection.setRequestProperty
/addRequestProperty
.
Domyślna wartość nagłówka User-Agent jest ustawiana z właściwości systemowej "http.agent"
. PlugIn i WebStart pozwalają ustawić tę właściwość.
Jeśli korzystasz z Apache HttpClient do zarządzania programową łącznością HTTP, otrzymasz niezwykle przydatny interfejs API, który umożliwia tworzenie połączeń (i opcjonalnie automatyczne ponowne łączenie po niepowodzeniu), ustawienie nagłówków, postów i uzyskiwania, przydatnych metod pobierania zwróconych treści i o wiele wiele więcej.
Wiem, że ten wpis jest stary, ale jeśli ktoś go czyta: HttpURLConnection jest teraz preferowany w stosunku do HttpClient, zobacz [ten post na blogu] (http://android-developers.blogspot.com/2011/09/androids-http-clients. html) dla informacji. – kamituel
Rozwiązałem mój problem. Możemy po prostu wysłać nagłówek do aplikacji/json i przekazać ciało jako obiekt json. To po prostu rozwiązuje problem.
Upewnij się, że w razie potrzeby rozróżniaj metody addRequestProperty i setRequestProperty. Ustawiony wariant zastępuje istniejący nagłówek tym samym kluczem. Dodany wariant dodaje i dodatkową instancję nagłówka, jeśli już istnieje. – laz
Czy 'addRequestProperty' dodaje nową linię (innymi słowy, żądania będą miały 2 wiersze z ** identycznymi kluczami **) lub czy doda ona przecinek i nową wartość do istniejącej linii? – Pacerier
@leoger Dzięki za pomoc = D – Pacerier