Send en skjema-POST gjennom en HTTP-proxy med Java HttpURLConnection
Åpne en forbindelse med en eksplisitt HTTP-proxy, velg POST, skriv skjemaets kropp og kontroller HTTP-resultatet.
openConnection(proxy) bygger forbindelsen med en rute. Angi HTTP-metoden og kroppen på HttpURLConnection-objektet som returneres, før du starter forespørselen:
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();
}Eksempelet sender et lite skjema, skriver ut statusen og lukker en svarstrøm som ikke brukes. Erstatt det siste trinnet med applikasjonens håndtering av svarkroppen når kroppen trengs.
Proxyens vertsnavn og port hører til route. For en tillatt offentlig skjematest uten proxykonto, velg HTTP-adressen fra en oppføring i HTTP-proxylisten. URL-en forblir skjemaets endepunkt. For dynamiske skjemaverdier bruker du URLEncoder til å kode hver verdi i stedet for å sette sammen uescapet inndata med likhetstegn og ampersander.
Utstrømmen sender de forberedte bytene. Les statusen etter at du har skrevet og lukket den, og velg deretter den vanlige eller feil-svarstrømmen etter behov. Et mislykket HTTP-svar kan inneholde nyttig feilinnhold fra applikasjonen eller proxyen.