Stuur 'n vorm-POST deur 'n HTTP-proxy met Java HttpURLConnection
Maak 'n verbinding oop met 'n eksplisiete HTTP-proxy, kies POST, skryf die vormliggaam en ondersoek die HTTP-resultaat.
openConnection(proxy) bou die verbinding met 'n roete. Stel die HTTP-metode en liggaam op die teruggekeerde HttpURLConnection voordat die versoek begin:
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();
}Die voorbeeld stuur 'n klein vorm, druk die status en sluit 'n ongebruikte antwoordstroom. Vervang daardie laaste stap met die toepassing se hantering van die antwoordliggaam wanneer die liggaam nodig is.
Die proxy-gasheer en -poort hoort by route. Vir 'n toegelate openbare vormtoets sonder 'n proxy-rekening, kies die HTTP-adres uit 'n inskrywing in die HTTP-proxylys. Die URL bly die vorm se eindpunt. Vir dinamiese vormwaardes, gebruik URLEncoder om elke waarde te kodeer eerder as om onopgeruimde invoer met gelyktekens en ampersande te verbind.
Die uitvoerstroom stuur die voorbereide grepe. Lees die status nadat jy geskryf en dit gesluit het, en kies dan die gewone of foutantwoordstroom soos gepas. 'n Nie-suksesvolle HTTP-antwoord kan nuttige toepassing- of proxy-foutinhoud bevat.