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