Адпраўка POST-формы праз HTTP-праксі з дапамогай Java HttpURLConnection
Адкрыйце злучэнне праз явны HTTP-праксі, выберыце POST, запішыце цела формы і праверце вынік HTTP.
openConnection(proxy) стварае злучэнне з маршрутам. Задайце метад HTTP і цела ў вернутым HttpURLConnection перад пачаткам запыту:
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();
}Прыклад адпраўляе невялікую форму, друкуе яе статус і зачыняе невыкарыстаны паток адказу. Замяніце гэты апошні крок апрацоўкай цела адказу ў праграме, калі цела патрэбнае.
Імя хоста і порт праксі належаць route. Для дазволенага публічнага тэсту формы без уліковага запісу праксі выберыце HTTP-адрас з запісу спісу HTTP-праксі. URL застаецца канчатковай кропкай формы. Для дынамічных значэнняў формы выкарыстоўвайце URLEncoder, каб кадаваць кожнае значэнне, а не злучаць неэкранаваныя даныя знакамі роўнасці і амперсанда.
Паток вываду адпраўляе падгатаваныя байты. Прачытайце статус пасля запісу і закрыцця, затым выберыце звычайны паток адказу або паток памылкі. Няўдалы HTTP-адказ можа змяшчаць карысныя даныя пра памылку праграмы або праксі.