Ein Formular-POST über einen HTTP-Proxy mit Java HttpURLConnection senden
Öffnen Sie eine Verbindung mit einem expliziten HTTP-Proxy, wählen Sie POST, schreiben Sie den Formularkörper und prüfen Sie das HTTP-Ergebnis.
openConnection(proxy) baut die Verbindung mit einer Route auf. Legen Sie die HTTP-Methode und den Body auf der zurückgegebenen HttpURLConnection fest, bevor Sie die Anfrage starten:
Proxy route = new Proxy(Proxy.Type.HTTP,
new InetSocketAddress("proxy.example", 8080));
HttpURLConnection connection = (HttpURLConnection)
URI.create("http://www.example.com/submit").toURL().openConnection(route);
try {
connection.setConnectTimeout(5000);
connection.setReadTimeout(15000);
connection.setRequestMethod("POST");
connection.setDoOutput(true);
connection.setRequestProperty("Content-Type",
"application/x-www-form-urlencoded; charset=UTF-8");
byte[] form = "message=hello+proxy".getBytes(StandardCharsets.UTF_8);
try (OutputStream out = connection.getOutputStream()) {
out.write(form);
}
int status = connection.getResponseCode();
System.out.println(status);
InputStream response = status >= 400
? connection.getErrorStream() : connection.getInputStream();
if (response != null) response.close();
} finally {
connection.disconnect();
}Das Beispiel sendet ein kleines Formular, gibt dessen Status aus und schließt einen ungenutzten Antwortstrom. Ersetzen Sie diesen letzten Schritt durch die Behandlung des Antwort-Bodys in der Anwendung, wenn der Body benötigt wird.
Hostname und Port des Proxys gehören zu route. Für einen zulässigen öffentlichen Formulartest ohne Proxy-Konto wählen Sie die HTTP-Adresse aus einem Eintrag in der HTTP-Proxy-Liste. Die URL bleibt der Endpunkt des Formulars. Für dynamische Formularwerte kodieren Sie jeden Wert mit URLEncoder, statt unescapte Eingaben mit Gleichheits- und Ampersand-Zeichen zu verketten.
Der Ausgabestrom sendet die vorbereiteten Bytes. Lesen Sie den Status, nachdem Sie geschrieben und geschlossen haben, und wählen Sie dann den normalen oder den Fehler-Antwortstrom. Eine nicht erfolgreiche HTTP-Antwort kann nützliche Fehlerinhalte der Anwendung oder des Proxys enthalten.