Αποστολή 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 για κωδικοποίηση κάθε τιμής αντί να ενώνετε μη διαφευγμένη είσοδο με ίσον και ampersand.
Το ρεύμα εξόδου στέλνει τα έτοιμα byte. Διαβάστε την κατάσταση αφού γράψετε και κλείσετε, έπειτα επιλέξτε το κανονικό ή το ρεύμα απόκρισης σφάλματος ανάλογα. Μια ανεπιτυχής απόκριση HTTP μπορεί να περιέχει χρήσιμο περιεχόμενο σφάλματος της εφαρμογής ή του διακομιστή μεσολάβησης.