HTTP-java模擬Post請求小栗子


 1 import java.io.BufferedReader;
 2 import java.io.IOException;
 3 import java.io.InputStreamReader;
 4 import java.io.PrintWriter;
 5 import java.net.URL;
 6 import java.net.URLConnection;
 7 
 8 import javax.net.ssl.HostnameVerifier;
 9 import javax.net.ssl.HttpsURLConnection;
10 import javax.net.ssl.SSLSession;
11 
12 import org.apache.log4j.Logger;
13 
14 import com.xwtech.parser.PostRequestHtmlParser;
15 
16 /**
17  * Post請求類——得到HTML響應
18  */
19 public class PostRequest extends Thread {
20     private String url = "https://b2b.10086.cn/b2b/main/listVendorNoticeResult.html?noticeBean.noticeType=";
21     private String params;
22     private Logger logger;
23     
24     public PostRequest(int noticeType, int perPageSize) {
25         logger = Logger.getLogger(PostRequest.class);
26         this.url = this.url + noticeType;  //拼接URL請求,不包含參數 27         params = "page.currentPage=" + currentPage + "&page.perPageSize=" + perPageSize
28                 + "&noticeBean.sourceCH=&noticeBean.source="
29                 + "&noticeBean.title=&noticeBean.startDate=&noticeBean.endDate=";
30     }
31 
32     public void run() {
33         PrintWriter out = null;
34         BufferedReader in = null;
35         URLConnection conn = null;
36         String result = "";
37         try {
38             conn = new URL(url).openConnection();
39             conn.setUseCaches(false);
40             conn.setRequestProperty("accept", "*/*");
41             conn.setRequestProperty("connection", "Keep-Alive");
42             conn.setRequestProperty("user-agent",
43                     "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36");
44             conn.setRequestProperty("X-Requested-With", "XMLHttpRequest");
45             // 發送POST請求必須設置如下兩行
46             conn.setDoOutput(true);
47             conn.setDoInput(true);
48 
49             // 獲取URLConnection對象對應的輸出流
50             out = new PrintWriter(conn.getOutputStream());
51             // 發送請求參數
52             out.print(params);
53             // flush輸出流的緩沖
54             out.flush();
55             in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
56             String line;
57             while ((line = in.readLine()) != null) {
58                 result += line;
59             }
60         } catch (Exception e) {
61             logger.error(currentThread().getName() + "線程Post請求出現問題!\n" + e.getMessage() + "\n");
62         } finally {// 使用finally塊來關閉輸出流、輸入流
63             try {
64                 if (out != null) {
65                     out.close();
66                 }
67                 if (in != null) {
68                     in.close();
69                 }
70             } catch (IOException ex) {
71                 logger.error(currentThread().getName() + "線程Post請求數據流出現問題!\n" + ex.getMessage() + "\n");
72             }
73         } 
74         //獲取到相應結果result ,可以直接在這里進行下一步處理,或者放入到全局字段中,通過其他方式獲取......
75     }
76 }

上面對應的參數以及url等信息可以使用chrome,firefox等瀏覽器network組件查看。

相關文章

  java-get請求: http://www.cnblogs.com/husky/p/6377577.html

  java https請求忽略安全證書信任: http://www.cnblogs.com/husky/p/6378290.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM