English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

محاكاة طلبات Get/Post لـ http باستخدام ip وport الوسيط

يتضمن هذا المقال ثلاث نقاط أساسية:

1- لأن العديد من الشركات تحتوي على وكيل داخلي، يستخدم المتصفح عنوان IP والمنفذ للوصول إلى الإنترنت، ويحتاج أيضًا إلى وكيل عام لتمثيل طريقة HTTP GET في الكود Java

2- كود Java لتنفيذ طلبات Get/Post عبر HTTP

3- يتعلق الأمر بتعيين خصائص رأس طلب HttpURLConnection

مثل Cookie، User-Agent (نوع المتصفح) وما إلى ذلك.

مثلاً: إضافة عنوان إلى طلب HTTP

conn.setRequestProperty("Authorization", authorization);

الاشارة: لقد وجدت هذا النص من خلال البحث على الإنترنت لتحقيق طلب Get/Post، وأضفت إعدادات الوكيل، ودمجته بشكل كامل.

package com.pasier.quanzi.web.controller;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;
import java.util.Map;
public class HttpRequest {
  public static void main(String[] args) {
    // إذا لم يتم إعداد هذا، يمكن أن يكون هذا الخيار غير ضروري طالما أن عنوان IP وポート للوسيط صحيحان
    System.getProperties().setProperty("http.proxyHost", "10.22.40.32");
    System.getProperties().setProperty("http.proxyPort", "8080");
    // التحقق من إعداد الوسيط بنجاح
    // إرسال طلب GET
    System.out.println(sendGet(
        "http://www.baidu.com",
        "param1=xxx¶m2=yyy");
    // إرسال طلب POST
  }
  /**
   * إرسال طلب GET إلى URL المحدد
   * 
   * @param url
   *      URL الذي يتم إرسال الطلب إليه
   * @param param
   *      请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
   * @return النتيجة التي تمثلها URL للنموذج المطلوب
   */
  public static String sendGet(String url, String param) {
    String result = "";
    BufferedReader in = null;
    try {
      String urlNameString = url + "?" + param;
      URL realUrl = new URL(urlNameString);
      // 打开和URL之间的连接
      URLConnection connection = realUrl.openConnection();
      // 设置通用的请求属性
      connection.setRequestProperty("accept", "*/*");
      connection.setRequestProperty("connection", "Keep-Alive");
      connection.setRequestProperty("user-agent",
          "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
      // إنشاء الاتصال الفعلي
      connection.connect();
      // الحصول على جميع حقول رؤوس الاستجابة
      Map<String, List<String>> map = connection.getHeaderFields();
      // 遍历所有的响应头字段
      for (String key : map.keySet()) {
        System.out.println(key + "--->" + map.get(key));
      }
      // 定义 BufferedReader输入流来读取URL的响应
      in = new BufferedReader(new InputStreamReader(
          connection.getInputStream()));
      String line;
      while ((line = in.readLine()) != null) {
        result += line;
      }
    } catch (Exception e) {
      System.out.println("发送GET请求出现异常!" + e);
      e.printStackTrace();
    }
    // 使用finally块来关闭输入流
    finally {
      try {
        if (in != null) {
          in.close();
        }
      } catch (Exception e2) {
        e2.printStackTrace();
      }
    }
    return result;
  }
  /**
   * 向指定 URL 发送POST方法的请求
   * 
   * @param url
   *      发送请求的 URL
   * @param param
   *      请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
   * @return 所代表远程资源的响应结果
   */
  public static String sendPost(String url, String param) {
    PrintWriter out = null;
    BufferedReader in = null;
    String result = "";
    try {
      URL realUrl = new URL(url);
      // 打开和URL之间的连接
      URLConnection conn = realUrl.openConnection();
      // 设置通用的请求属性
      conn.setRequestProperty("accept", "*/*");
      conn.setRequestProperty("connection", "Keep-Alive");
      conn.setRequestProperty("user-agent",
          "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
      // 发送POST请求必须设置如下两行
      conn.setDoOutput(true);
      conn.setDoInput(true);
      // الحصول على تدفق الخروج لمكتبةURLConnection
      out = new PrintWriter(conn.getOutputStream());
      // إرسال معامل الطلب
      out.print(param);
      // إفراغ تدفق الخروج من الحافز
      out.flush();
      // تعريف تدفق الإدخالBufferedReader لقراءة استجابة URL
      in = new BufferedReader(
          new InputStreamReader(conn.getInputStream()));
      String line;
      while ((line = in.readLine()) != null) {
        result += line;
      }
    } catch (Exception e) {
      System.out.println("出现了发送 POST 请求的异常!" + e);
      e.printStackTrace();
    }
    // استخدم مكتبة finally لغلق تدفق الإدخال والخروج
    finally {
      try {
        if (out != null) {
          out.close();
        }
        if (in != null) {
          in.close();
        }
      } catch (IOException ex) {
        ex.printStackTrace();
      }
    }
    return result;
  }
}

هذا المقال الذي يحتوي على محاكاة طلبات HTTP Get/Post لغة Java مع إعداد الـ IP وـ Port كعامل تأمين هو كل المحتوى الذي أشاركه معكم، وأتمنى أن يكون مرجعًا جيدًا وأن تحصلوا على الدعم الكافي من دروس الركض.

الأسئلة التي قد تعجبك