Изпращане на 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 отговор може да съдържа полезна информация за грешка от приложението или проксито.