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 + "¬iceBean.sourceCH=¬iceBean.source=" 29 + "¬iceBean.title=¬iceBean.startDate=¬iceBean.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