Send ein skjema-POST gjennom ein HTTP-proxy med Java HttpURLConnection
Opne ei tilkoping med ein eksplisitt HTTP-proxy, vel POST, skriv skjemaet sin kropp og gransk HTTP-resultatet.
openConnection(proxy) byggjer tilkopinga med ei rute. Set HTTP-metoden og kroppen på den returnerte HttpURLConnection før førespurnaden startar:
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();
}Dømet sender eit lite skjema, skriv ut statusen og legg ned ein ubrukt svarstraum. Byt ut det siste steget med handsaminga av svarkroppen i applikasjonen når kroppen trengst.
Vertsnamnet og porten til proxyen høyrer til route. For ein tillaten offentleg skjematest utan proxykonto, vel HTTP-adressa frå ei oppføring i HTTP-proxylista. URL-en blir verande endepunktet til skjemaet. For dynamiske skjemaverdiar brukar du URLEncoder til å kode kvar verdi i staden for å setje saman uescapa inndata med likskapsteikn og ampersandar.
Utstraumen sender dei farebude byta. Les statusen etter at du har skrive og late att, og vel så den vanlege eller feil-svarstraumen etter behov. Eit mislukka HTTP-svar kan innehalde nyttig feilinnhald frå applikasjonen eller proxyen.