web-dev-qa-db-de.com

So ändern Sie den Header einer HttpUrlConnection

Ich versuche, das Java-HTML-Dokument ein wenig zu verbessern, aber ich habe Probleme mit der HttpUrlConntion. Eine Sache ist, dass einige Server eine Anfrage blockieren, wenn der Benutzeragent eine Java-VM ist. Ein anderes Problem ist, dass die Variable HttpUrlConnection das Headerfeld Referrer oder Location nicht setzt. Da mehrere Websites diese Felder verwenden, um zu überprüfen, ob auf die Inhalte von ihrer eigenen Website aus zugegriffen wurde, bin ich auch hier blockiert. Soweit ich sehen kann, besteht die einzige Lösung darin, den URL-Handler des HTTP-Protokolls zu ersetzen. Oder gibt es eine Möglichkeit, den Standard-HTTP-Handler zu ändern?

26
tigger

Öffnen Sie die URL mit URL.openConnection. Optional in HttpURLConnection umwandeln. Rufen Sie URLConnection.setRequestProperty/addRequestProperty auf.

Der Standardwert für den User-Agent-Header wird in der Systemeigenschaft "http.agent" festgelegt. Mit dem PlugIn und dem WebStart können Sie diese Eigenschaft festlegen.

42

Wenn Sie Apache HttpClient verwenden, um Ihre programmatische HTTP-Konnektivität zu verwalten, erhalten Sie eine äußerst nützliche API, die das Herstellen von Verbindungen (und das optionale automatische erneute Herstellen der Verbindung bei einem Fehler) sowie das Festlegen von Headern, Posts vs. und sehr viel mehr. 

2
j pimmel

Ich habe mein Problem gelöst. Wir können den Header einfach an application/json senden und den Body als Json-Objekt übergeben. Das löst das Problem einfach.

0
Nayanava