Odoslanie POST formulára cez HTTP proxy s Java HttpURLConnection
Otvorte spojenie s explicitnou HTTP proxy, zvoľte POST, zapíšte telo formulára a prezrite výsledok HTTP.
openConnection(proxy) zostaví spojenie s trasou. Pred začatím požiadavky nastavte metódu HTTP a telo na vrátenom 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();
}Príklad odošle malý formulár, vypíše jeho stav a zatvorí nevyužitý prúd odpovede. Nahraďte tento posledný krok spracovaním tela odpovede v aplikácii, keď je telo potrebné.
Názov hostiteľa a port proxy patria k route. Pre povolený verejný test formulára bez účtu proxy vyberte adresu HTTP zo záznamu v zozname HTTP proxy. URL zostáva koncovým bodom formulára. Pri dynamických hodnotách formulára použite URLEncoder na kódovanie každej hodnoty, namiesto spájania neescapovaného vstupu znakmi rovná sa a ampersand.
Výstupný prúd odosiela pripravené bajty. Po zápise a zatvorení prečítajte stav a potom zvoľte bežný prúd odpovede alebo prúd chyby. Neúspešná odpoveď HTTP môže obsahovať užitočný obsah chyby aplikácie alebo proxy.