Wysyłanie POST formularza przez proxy HTTP z Java HttpURLConnection
Otwórz połączenie z jawnym proxy HTTP, wybierz POST, zapisz treść formularza i sprawdź wynik HTTP.
openConnection(proxy) buduje połączenie z trasą. Przed rozpoczęciem żądania ustaw metodę HTTP i treść na zwróconym HttpURLConnection:
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();
}Przykład wysyła mały formularz, wypisuje jego stan i zamyka nieużywany strumień odpowiedzi. Zastąp ten ostatni krok obsługą treści odpowiedzi w aplikacji, gdy treść jest potrzebna.
Nazwa hosta i port proxy należą do route. Do dozwolonego publicznego testu formularza bez konta proxy wybierz adres HTTP z wpisu na liście proxy HTTP. URL pozostaje punktem końcowym formularza. W przypadku dynamicznych wartości formularza użyj URLEncoder do zakodowania każdej wartości, zamiast łączyć nieescapowany tekst znakami równości i ampersandami.
Strumień wyjściowy wysyła przygotowane bajty. Odczytaj stan po zapisaniu i zamknięciu, a następnie wybierz zwykły strumień odpowiedzi lub strumień błędu. Nieudana odpowiedź HTTP może zawierać przydatną treść błędu aplikacji lub proxy.