一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - java模擬http的Get/Post請求,并設(shè)置ip與port代理的方法

java模擬http的Get/Post請求,并設(shè)置ip與port代理的方法

2020-08-13 12:02JAVA教程網(wǎng) Java教程

下面小編就為大家?guī)硪黄猨ava模擬http的Get/Post請求,并設(shè)置ip與port代理的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

本文涉及3個基本點(diǎn):

1、因?yàn)楹芏喙镜膬?nèi)網(wǎng)都設(shè)有代理,瀏覽器通過ip與port上網(wǎng),而java代碼模擬http get方式同樣需要外網(wǎng)代理;

2、Java實(shí)現(xiàn)http的Get/Post請求代碼;

3、主要是設(shè)置HttpURLConnection請求頭里面的屬性

比如Cookie、User-Agent(瀏覽器類型)等等。

比如:http請求中添加Header

?
1
conn.setRequestProperty("Authorization", authorization);

注:我就在網(wǎng)上找的一段Get/Post模擬請求代碼,添加了下代理的配置,整合完成的。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
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) {
    // 如果不設(shè)置,只要代理IP和代理端口正確,此項(xiàng)不設(shè)置也可以
    System.getProperties().setProperty("http.proxyHost", "10.22.40.32");
    System.getProperties().setProperty("http.proxyPort", "8080");
    // 判斷代理是否設(shè)置成功
    // 發(fā)送 GET 請求
    System.out.println(sendGet(
        "http://www.baidu.com",
        "param1=xxx&param2=yyy"));
    // 發(fā)送 POST 請求
  }
 
  /**
   * 向指定URL發(fā)送GET方法的請求
   *
   * @param url
   *      發(fā)送請求的URL
   * @param param
   *      請求參數(shù),請求參數(shù)應(yīng)該是 name1=value1&name2=value2 的形式。
   * @return URL 所代表遠(yuǎn)程資源的響應(yīng)結(jié)果
   */
  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();
      // 設(shè)置通用的請求屬性
      connection.setRequestProperty("accept", "*/*");
      connection.setRequestProperty("connection", "Keep-Alive");
      connection.setRequestProperty("user-agent",
          "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
      // 建立實(shí)際的連接
      connection.connect();
      // 獲取所有響應(yīng)頭字段
      Map<String, List<String>> map = connection.getHeaderFields();
      // 遍歷所有的響應(yīng)頭字段
      for (String key : map.keySet()) {
        System.out.println(key + "--->" + map.get(key));
      }
      // 定義 BufferedReader輸入流來讀取URL的響應(yīng)
      in = new BufferedReader(new InputStreamReader(
          connection.getInputStream()));
      String line;
      while ((line = in.readLine()) != null) {
        result += line;
      }
    } catch (Exception e) {
      System.out.println("發(fā)送GET請求出現(xiàn)異常!" + e);
      e.printStackTrace();
    }
    // 使用finally塊來關(guān)閉輸入流
    finally {
      try {
        if (in != null) {
          in.close();
        }
      } catch (Exception e2) {
        e2.printStackTrace();
      }
    }
    return result;
  }
 
  /**
   * 向指定 URL 發(fā)送POST方法的請求
   *
   * @param url
   *      發(fā)送請求的 URL
   * @param param
   *      請求參數(shù),請求參數(shù)應(yīng)該是 name1=value1&name2=value2 的形式。
   * @return 所代表遠(yuǎn)程資源的響應(yīng)結(jié)果
   */
  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();
      // 設(shè)置通用的請求屬性
      conn.setRequestProperty("accept", "*/*");
      conn.setRequestProperty("connection", "Keep-Alive");
      conn.setRequestProperty("user-agent",
          "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
      // 發(fā)送POST請求必須設(shè)置如下兩行
      conn.setDoOutput(true);
      conn.setDoInput(true);
      // 獲取URLConnection對象對應(yīng)的輸出流
      out = new PrintWriter(conn.getOutputStream());
      // 發(fā)送請求參數(shù)
      out.print(param);
      // flush輸出流的緩沖
      out.flush();
      // 定義BufferedReader輸入流來讀取URL的響應(yīng)
      in = new BufferedReader(
          new InputStreamReader(conn.getInputStream()));
      String line;
      while ((line = in.readLine()) != null) {
        result += line;
      }
    } catch (Exception e) {
      System.out.println("發(fā)送 POST 請求出現(xiàn)異常!" + e);
      e.printStackTrace();
    }
    // 使用finally塊來關(guān)閉輸出流、輸入流
    finally {
      try {
        if (out != null) {
          out.close();
        }
        if (in != null) {
          in.close();
        }
      } catch (IOException ex) {
        ex.printStackTrace();
      }
    }
    return result;
  }
}

以上這篇java模擬http的Get/Post請求,并設(shè)置ip與port代理的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持服務(wù)器之家。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产japanese孕妇孕交 | 玩两个少妇女邻居 | 欧美美女一级片 | 日本一区二区高清免费不卡 | 色老板视频在线 | 884aa在线看片| mm在线 | 日本三级在丈面前被耍了 | 免费一级黄 | 精品视频免费在线 | 国产欧美日韩综合 | 办公室出轨秘书高h | 亚洲第一在线播放 | 日韩在线第一区 | 九九九九视频 | 亚洲乱亚洲乱妇41p国产成人 | 男人猛进猛出女人下面视频 | 日本三级免费网站 | 韩国日本在线观看 | 久久国产影院 | asianfemdom冷柔女王 | 久久伊人在 | 日韩高清一区 | 乌克兰黄色录像 | 亚洲不卡视频 | 色多多在线观看视频 | 成人久久18免费网站入口 | 亚洲网站在线播放 | a级片欧美| 欧式午夜理伦三级在线观看 | 艾秋麻豆果冻传媒老狼仙踪林 | 成人啪啪漫画羞羞漫画www网站 | 白白国产永久免费视频 | 成人精品一级毛片 | 国产欧美精品一区二区三区–老狼 | 国产成人精品视频一区 | 国产一级在线免费观看 | 午夜AV国产欧美亚洲高清在线 | 黄情视频| 新版孕妇bbwbbwbbw | 精品国产理论在线观看不卡 |