Trimiterea unui POST de formular printr-un proxy HTTP cu Java HttpURLConnection
Deschideți o conexiune cu un proxy HTTP explicit, alegeți POST, scrieți corpul formularului și inspectați rezultatul HTTP.
openConnection(proxy) construiește conexiunea cu o rută. Setați metoda HTTP și corpul pe HttpURLConnection returnat înainte de a iniția cererea:
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();
}Exemplul trimite un formular mic, tipărește starea lui și închide un flux de răspuns neutilizat. Înlocuiți acel ultim pas cu tratarea corpului răspunsului în aplicație atunci când corpul este necesar.
Numele gazdă și portul proxy-ului aparțin lui route. Pentru un test public de formular permis fără cont de proxy, alegeți adresa HTTP dintr-o intrare din lista de proxy-uri HTTP. URL-ul rămâne punctul final al formularului. Pentru valori dinamice de formular, folosiți URLEncoder pentru a codifica fiecare valoare în loc să uniți intrare neescapată cu semne egal și ampersand.
Fluxul de ieșire trimite octeții pregătiți. Citiți starea după scriere și închidere, apoi alegeți fluxul de răspuns obișnuit sau pe cel de eroare, după caz. Un răspuns HTTP nereușit poate conține conținut util de eroare al aplicației sau al proxy-ului.