国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

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

服務器之家 - 編程語言 - Java教程 - java 實現通過 post 方式提交json參數操作

java 實現通過 post 方式提交json參數操作

2020-09-13 00:08joexk Java教程

這篇文章主要介紹了java 實現通過 post 方式提交json參數操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

由于所爬取的網站需要驗證碼,通過網頁的開發人員工具【F12】及在線http post,get接口測試請求工具(http://coolaf.com/)發現訪問時加上請求頭header 信息時可以跳過驗證碼校驗。

而且該網站只接受post請求,對提交的參數也只接受json格式,否則請求失敗。

現將通過 post 方式提交json參數的方法記錄如下:

?
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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
import java.io.UnsupportedEncodingException;
import java.net.URI;
import java.net.URLDecoder;
import java.util.ArrayList;
import java.util.List;
 
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpRequestBase;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
 
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
 
/**
 * <p>@PostJsonParamsTest.java</p>
 * @version 1.0
 * @author zxk
 * @Date 2018-3-3
 */
public class PostJsonParamsTest {
 
  // 超時時間
  private static final int RUN_TIME =10000;
 
  // 爬取初始頁數
  private String page;
 
  public static void main(String[] args) throws Exception {
    PostJsonParamsTest crawl = new PostJsonParamsTest();
 
    // 請求的url地址
    String url ="http://www.gzcredit.gov.cn/Service/CreditService.asmx/searchOrgWithPage";
    // 設置起始訪問頁碼
    crawl.setPage("1");
    String isStop = "";
 
    // 設置請求
    HttpRequestBase request = null;
    request = new HttpPost(url);
 
    try {
      // 設置config
      RequestConfig requestConfig = RequestConfig.custom()
            .setSocketTimeout(RUN_TIME)
            .setConnectTimeout(RUN_TIME)
            .setConnectionRequestTimeout(RUN_TIME)
            .build();
      request.setConfig(requestConfig);
 
      // json 格式的 post 參數
      String postParams ="{\"condition\":{\"qymc\":\"%%%%\",\"cydw\":\"\"},\"pageNo\":"+crawl.getPage()+",\"pageSize\":100,count:2709846}";
      System.out.println(postParams);
      HttpEntity httpEntity = new StringEntity(postParams);
      ((HttpPost) request).setEntity(httpEntity);
 
      // 添加請求頭,可以繞過驗證碼
      request.addHeader("Accept","application/json, text/javascript, */*");
      request.addHeader("Accept-Encoding","gzip, deflate");
      request.addHeader("Accept-Language", "zh-CN,zh;q=0.8");
      request.addHeader("Connection", "keep-alive");
      request.addHeader("Host", "www.gzcredit.gov.cn");
      request.addHeader("Content-Type", "application/json; charset=UTF-8");
 
      URIBuilder builder = new URIBuilder(url);      
      URI uri = builder.build();
      uri = new URI(URLDecoder.decode(uri.toString(), "UTF-8"));
      request.setURI(uri);
 
      while(!isStop.equals("停止")||isStop.equals("重跑")){
        isStop = crawl.crawlList(request);
        if(isStop.equals("爬取")){
          crawl.setPage(String.valueOf(Integer.parseInt(crawl.getPage())+1));
        }
 
        // if("2713".equals(crawl.getPage())) break;
        if("2".equals(crawl.getPage())){
          break;
        }
      }
    } catch (NumberFormatException e) {
      e.printStackTrace();
      throw new NumberFormatException("數字格式錯誤");
    } catch (UnsupportedEncodingException e) {
      e.printStackTrace();
      throw new UnsupportedEncodingException("不支持的編碼集");
    }
  }
  /**
   * 爬取搜索列表
   * @param page
   * @return
   */
  private String crawlList(HttpRequestBase request){
    int statusCode = 0;
 
    // 下面兩種方式都可以用來創建客戶端連接,相當于打開了一個瀏覽器
    CloseableHttpClient httpClient = HttpClients.createDefault();
    // HttpClient httpClient = HttpClientBuilder.create().build();
 
    HttpEntity httpEntity = null;
    HttpResponse response = null;
    try {     
      try {       
        response = httpClient.execute(request);
      } catch (Exception e){
        e.printStackTrace();
        EntityUtils.consumeQuietly(httpEntity);
        return "重跑";
      }
 
      //打印狀態
      statusCode =response.getStatusLine().getStatusCode();
      if(statusCode!=200){
        EntityUtils.consumeQuietly(httpEntity);
        return "重跑";
      }
      //實體
      httpEntity = response.getEntity();
      String searchListStr = EntityUtils.toString(httpEntity,"GBK").replaceAll("\\\\米", "米");
      String allData = (String) JSONObject.parseObject(searchListStr).get("d");
      // 字符串值中間含雙引號的替換處理
      String s = allData.replaceAll("\\{\"","{'")
          .replaceAll("\":\"", "':'")
          .replaceAll("\",\"", "','")
          .replaceAll("\":", "':")
          .replaceAll(",\"", ",'")
          .replaceAll("\"\\}", "'}")
          .replaceAll("\"", "")
          .replaceAll("'", "\"")
          .replaceAll("<br />", "")       
          .replaceAll("\t", "")
          .replaceAll("\\\\", "?");
      JSONObject jsonData = JSONObject.parseObject(s);
      JSONArray jsonContent = jsonData.getJSONArray("orgList");
 
      searchListStr = null;
      allData = null;
      s = null;
 
      if (jsonContent==null || jsonContent.size()<1) {
        return "重跑";
      }
      System.out.println(jsonContent.toJSONString());
      return "爬取";
    } catch (Exception e) {
      e.printStackTrace();
      return "重跑";
    } finally{
      EntityUtils.consumeQuietly(httpEntity);
    }
  }
 
  private String getPage() {
    return page;
  }
 
  private void setPage(String page) {
    this.page = page;
  }
 
}

補充知識:JAVA利用HttpClient發送post請求,將請求數據放到body里

我就廢話不多說了,大家還是直接看代碼吧~

?
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
/**
 * post請求 ,請求數據放到body里
 * @param url  請求地址
 * @param bodyData 參數
 * @author wangyj
 * @date 2019年4月20日
 */
public static String doPostBodyData(String url, String bodyData) throws Exception{
  String result = "";
  CloseableHttpClient httpClient = null;
  CloseableHttpResponse response = null;
  try {
    HttpPost httpPost = getHttpPost(url, null); // 請求地址
    httpPost.setEntity(new StringEntity(bodyData, Encoding));
    httpClient = getHttpClient();
    // 得到返回的response
    response = httpClient.execute(httpPost);
    HttpEntity entity = response.getEntity();
    result = getResult(entity, Encoding);
  } catch (Exception e) {
    throw e;
  } finally {
    // 關閉httpClient
    if (null != httpClient) {
      httpClient.close();
    }
    // 關閉response
    if (null != response) {
      EntityUtils.consume(response.getEntity()); // 會自動釋放連接
      response.close();
    }
  }
  return result;
}

以上這篇java 實現通過 post 方式提交json參數操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/zhouxukun123/article/details/79441031

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲免费观看在线视频 | 亚洲福利社区 | www.欧美.com| 成人乱码一区二区三区av | 久久久777 | 亚洲精品福利 | 香蕉成人啪国产精品视频综合网 | 美色阁av | 99久久99久久久精品色圆 | 国产日产久久高清欧美一区 | 中文字幕第一区 | 欧美日韩高清在线一区 | 日韩有码在线观看 | 国产精品久久99 | 国产三级一区二区 | 欧美精品第一页 | 欧美一区二区三区视频 | 日韩在线观看中文字幕 | 91久久在线| 一本色道久久综合狠狠躁篇怎么玩 | 热99精品| 亚洲成年人网站在线观看 | 精品视频一区二区三区 | 国产精品视频一二三区 | 国产一区二区三区久久久久久久久 | 亚洲一区精品在线 | 日韩成人影院 | 免费观看黄色 | 天天草视频 | 久久久久久久久成人 | 久久综合九色综合网站 | 黄色片免费在线观看视频 | 99在线免费观看 | 国产精品久久久久久久久晋中 | 久久久一区二区 | 性色aⅴ免费视频 | 黄色短视频在线观看 | 在线观看av国产一区二区 | 成人免费在线视频 | 久热久| 日韩av中文在线 |