Send en formular-POST gennem en HTTP-proxy med Java HttpURLConnection
Åbn en forbindelse med en eksplicit HTTP-proxy, vælg POST, skriv formularens krop og undersøg HTTP-resultatet.
openConnection(proxy) opbygger forbindelsen med en rute. Angiv HTTP-metoden og kroppen på den returnerede HttpURLConnection, før anmodningen startes:
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();
}Eksemplet sender en lille formular, udskriver dens status og lukker en ubrugt svarstrøm. Erstat det sidste trin med applikationens håndtering af svar-kroppen, når kroppen er nødvendig.
Proxyens værtsnavn og port hører til route. Til en tilladt offentlig formulartest uden proxykonto vælges HTTP-adressen fra en post i HTTP-proxy-listen. URL'en forbliver formularens endepunkt. Til dynamiske formularværdier bruges URLEncoder til at kode hver værdi i stedet for at sammenkæde uescaped input med lighedstegn og ampersander.
Udstrømmen sender de forberedte bytes. Læs status, efter du har skrevet og lukket, og vælg derefter den almindelige eller fejl-svarstrøm efter behov. Et ikke-vellykket HTTP-svar kan indeholde nyttigt fejlindhold fra applikationen eller proxyen.