Enviar un POST de formulario a través dun proxy HTTP con Java HttpURLConnection
Abra unha conexión cun proxy HTTP explícito, escolla POST, escriba o corpo do formulario e examine o resultado HTTP.
openConnection(proxy) constrúe a conexión cunha ruta. Defina o método HTTP e o corpo na HttpURLConnection devolta antes de iniciar a solicitude:
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();
}O exemplo envía un formulario pequeno, imprime o seu estado e pecha un fluxo de resposta non usado. Substitúa ese último paso polo tratamento do corpo de resposta da aplicación cando se necesite o corpo.
O nome de host e o porto do proxy pertencen a route. Para unha proba pública de formulario permitida sen conta de proxy, escolla o enderezo HTTP dunha entrada na lista de proxies HTTP. A URL segue a ser o punto final do formulario. Para valores de formulario dinámicos, use URLEncoder para codificar cada valor en lugar de xuntar entrada sen escapar con signos igual e ampersands.
O fluxo de saída envía os bytes preparados. Lea o estado despois de escribir e pechar, e despois escolla o fluxo de resposta normal ou o de erro segundo corresponda. Unha resposta HTTP non exitosa pode conter contido útil de erro da aplicación ou do proxy.