Sūtīt veidlapas POST caur HTTP starpniekserveri ar Java HttpURLConnection
Atveriet savienojumu ar skaidru HTTP starpniekserveri, izvēlieties POST, ierakstiet veidlapas saturu un pārbaudiet HTTP rezultātu.
openConnection(proxy) izveido savienojumu ar maršrutu. Pirms pieprasījuma sākšanas atgrieztajā HttpURLConnection iestatiet HTTP metodi un saturu:
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();
}Piemērs nosūta mazu veidlapu, izdrukā tās statusu un aizver neizmantotu atbildes straumi. Ja saturs ir nepieciešams, aizstājiet šo pēdējo soli ar lietojumprogrammas atbildes satura apstrādi.
Starpniekservera resursdatora nosaukums un ports pieder route. Lai veiktu atļautu publisku veidlapas testu bez starpniekservera konta, izvēlieties HTTP adresi no ieraksta HTTP starpniekserveru sarakstā. URL paliek veidlapas galapunkts. Dinamiskām veidlapas vērtībām izmantojiet URLEncoder katras vērtības kodēšanai, nevis savienojiet neescapeotu ievadi ar vienādības zīmēm un ampersandiem.
Izvades straume nosūta sagatavotos baitus. Pēc rakstīšanas un aizvēršanas nolasiet statusu, pēc tam izvēlieties parasto vai kļūdas atbildes straumi atbilstoši vajadzībai. Neveiksmīga HTTP atbilde var saturēt noderīgu lietojumprogrammas vai starpniekservera kļūdas saturu.