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

Java имитация HTTP Get/Post запросов, и настройка ip и port прокси

Эта статья охватывает 3 основных момента:

1. Многие компании устанавливают прокси-серверы в своей внутренней сети, браузер выходит в Интернет через ip и порт, а Java-код, имитирующий способ HTTP Get, также требует внешнего прокси-сервера

2. Код реализации HTTP Get/Post на Java

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();
        }
      }
        e2.printStackTrace();
      }
    }
    возврат result;
  }
  /**
   * Отправка POST-запроса по указанному URL
   * 
   * @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();
      }
    }
    возврат result;
  }
}

Эту статью о java-имитации http-запросов Get/Post с настройкой прокси ip и port, которую я хочу поделиться с вами, я надеюсь, что она предоставит вам полезный пример, и希望大家多多 поддерживать呐喊 руководства.

Вам может понравиться