ارسال 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 ناموفق میتواند محتوای خطای مفید برنامه یا پروکسی را در خود داشته باشد.