Einstellen des Benutzeragenten einer Java-URLConnection
Beim Versuch, eine Webseite mit Java mit URLConnection zu analysieren und den Benutzeragenten auf eine bestimmte festzulegen Wert kann ein zusätzliches „Java/1.5.0_19“ am Ende angehängt werden. Dies ist auf eine Einschränkung in älteren Java-Versionen zurückzuführen.
Lösung (Java 1.6.30 und neuer)
In Java 1.6.30 und neuer ist dieses Problem aufgetreten wurde gelöst. Das Festlegen des Benutzeragenten mit setRequestProperty("User-Agent", "Mozilla ...") funktioniert jetzt korrekt, ohne die Java-Version anzuhängen.
Überprüfung
Zur Überprüfung Dazu können Sie mit Netcat einen Port abhören, der die rohen HTTP-Header eingehender Anfragen anzeigt. Ohne den Benutzeragenten festzulegen, werden in den Kopfzeilen Folgendes angezeigt:
GET /foobar HTTP/1.1 User-Agent: Java/1.6.0_30 Host: localhost:8080 Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 Connection: keep-alive
Beim Festlegen des Benutzeragenten werden in den Kopfzeilen stattdessen Folgendes angezeigt:
GET /foobar HTTP/1.1 User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2 Host: localhost:8080 Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 Connection: keep-alive
Beispielcode (Java 1.6. 30 )
Das folgende Codebeispiel zeigt, wie der Benutzer richtig eingestellt wird Agent:
import java.io.IOException; import java.net.URL; import java.net.URLConnection; public class TestUrlOpener { public static void main(String[] args) throws IOException { URL url = new URL("http://localhost:8080/foobar"); URLConnection hc = url.openConnection(); hc.setRequestProperty("User-Agent", "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2"); System.out.println(hc.getContentType()); } }
Das obige ist der detaillierte Inhalt vonWie stelle ich den User-Agent in Java URLConnection richtig ein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!