Skicka en formulär-POST genom en HTTP-proxy med Java HttpURLConnection
Öppna en anslutning med en explicit HTTP-proxy, välj POST, skriv formulärets brödtext och granska HTTP-resultatet.
openConnection(proxy) bygger anslutningen med en rutt. Ange HTTP-metoden och brödtexten på den returnerade HttpURLConnection innan begäran startas:
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();
}Exemplet skickar ett litet formulär, skriver ut dess status och stänger en oanvänd svarsström. Ersätt det sista steget med programmets hantering av svarskroppen när kroppen behövs.
Proxyns värdnamn och port tillhör route. För ett tillåtet offentligt formulärtest utan proxykonto väljer du HTTP-adressen från en post i HTTP-proxylistan. URL:en förblir formulärets slutpunkt. För dynamiska formulärvärden använder du URLEncoder för att koda varje värde i stället för att sammanfoga oescapad indata med likhetstecken och ampersandtecken.
Utströmmen skickar de förberedda byteen. Läs statusen efter att du skrivit och stängt, välj sedan den vanliga eller fel-svarsströmmen efter behov. Ett misslyckat HTTP-svar kan innehålla användbart felinnehåll från programmet eller proxyn.