Was ist der richtige Weg, Header in einem URLConnection der Einstellung?
-
11-07-2019 - |
Frage
Mein Code ist wie folgt:
URLConnection cnx = address.openConnection();
cnx.setAllowUserInteraction(false);
cnx.setDoOutput(true);
cnx.addRequestProperty("User-Agent",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)");
InputStream is = cnx.getInputStream();
Ist es in Ordnung, wenn ich die Header gesetzt, bevor ich den InputStream
bekommen? Wird mein Header gesendet werden, oder es wird der Server finden Sie in der User-Agent-Standard URLConnection
(falls vorhanden)?
Lösung
Die Header müssen vor eingestellt werden, um die InputStream
zu bekommen jede beeinflussen zu haben -. Ein IllegalStateException
geworfen wird, wenn die Verbindung bereits geöffnet ist
Was der User-Agent
Header speziell, es sollte gesendet werden, wenn es eingestellt wurde.
Sehen Sie das URLConnection JavaDoc.
Andere Tipps
Um die Frage zu beantworten, ist der Code korrekt. In dem Moment, getInputStream (), eine HTTP-GET an den Zielserver gesendet.
Eine Randnotiz auf User-Agenten, wenn Sie es nicht gesetzt, URLConnection wird den Standard eines wie auch immer, senden die lautet:
User-Agent: Java/1.6.0_24 (varies depending on your java version)
Ich würde davon abraten, Low-Level-Konstrukte wie URLConnection verwenden. Es gibt viele Bibliotheken für HTTP-Anforderungen zu senden, mit der prominenteste ist Apache HTTP-Client.