Slanje POST obrasca kroz HTTP proxy pomoću Java HttpURLConnection
Otvorite vezu s eksplicitnim HTTP proxyjem, odaberite POST, upišite tijelo obrasca i pregledajte HTTP rezultat.
openConnection(proxy) gradi vezu s rutom. Postavite HTTP metodu i tijelo na vraćeni HttpURLConnection prije pokretanja zahtjeva:
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();
}Primjer šalje mali obrazac, ispisuje njegov status i zatvara neiskorišteni tok odgovora. Zamijenite taj posljednji korak rukovanjem tijelom odgovora u aplikaciji kada je tijelo potrebno.
Ime hosta i port proxyja pripadaju route. Za dopušteni javni test obrasca bez proxy računa odaberite HTTP adresu iz unosa u popisu HTTP proxyja. URL ostaje krajnja točka obrasca. Za dinamičke vrijednosti obrasca upotrijebite URLEncoder za kodiranje svake vrijednosti umjesto spajanja neizbjegnutog unosa znakovima jednakosti i ampersanda.
Izlazni tok šalje pripremljene bajtove. Pročitajte status nakon pisanja i zatvaranja, zatim odaberite obični tok odgovora ili tok pogreške prema potrebi. Neuspješan HTTP odgovor može sadržavati koristan sadržaj pogreške aplikacije ili proxyja.