Pošiljanje POST obrazca skozi HTTP proxy z Java HttpURLConnection
Odprite povezavo z izrecnim HTTP proxyjem, izberite POST, zapišite telo obrazca in pregledajte rezultat HTTP.
openConnection(proxy) zgradi povezavo s potjo. Pred začetkom zahteve na vrnjenem HttpURLConnection nastavite metodo HTTP in telo:
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();
}Primer pošlje majhen obrazec, izpiše njegovo stanje in zapre neuporabljen tok odgovora. Ta zadnji korak zamenjajte z obdelavo telesa odgovora v aplikaciji, ko je telo potrebno.
Ime gostitelja in vrata proxyja pripadata route. Za dovoljen javni preizkus obrazca brez računa proxy izberite naslov HTTP iz vnosa na seznamu HTTP proxyjev. URL ostaja končna točka obrazca. Za dinamične vrednosti obrazca uporabite URLEncoder za kodiranje vsake vrednosti, namesto da bi neubescapiran vnos povezovali z enačaji in ampersandi.
Izhodni tok pošlje pripravljene bajte. Po pisanju in zaprtju preberite stanje, nato izberite običajni tok odgovora ali tok napake. Neuspešen odgovor HTTP lahko vsebuje koristno vsebino napake aplikacije ali proxyja.