ფორმის 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 პასუხი შეიძლება შეიცავდეს აპლიკაციის ან პროქსის სასარგებლო შეცდომის შიგთავსს.