使用HttpClient4.4 模擬http請求
阿新 • • 發佈:2019-01-24
3、使用HttpClient進行網路處理的基本步驟
(1)通過get的方式獲取到Response物件。
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpGet httpGet = new HttpGet("http://www.baidu.com/");
CloseableHttpResponse response = httpClient.execute(httpGet);
注意,必需要加上http://的字首,否則會報:Target host is null異常。
(2)獲取Response物件的Entity。注:HttpClient將Response的正文及Request的POST/PUT方法中的正文均封裝成一個HttpEntity物件。可以通過entity.getContenType(),entity.getContentLength()等方法獲取到正文的相關資訊。但最重要的方法是通過getContent()獲取到InputStream物件。
(3)通過Entity獲取到InputStream物件,然後對返回內容進行處理。
package com.test.demo; import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.io.Writer; import java.util.Scanner; import org.apache.http.HttpEntity; import org.apache.http.HttpStatus; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; public class GetPostDemo { public static void main(String args[]){ CloseableHttpClient httpclient = HttpClients.createDefault(); HttpGet httpGet = new HttpGet("http://v.polyv.net/uc/cata/list?cataid=1"); try { CloseableHttpResponse response = httpclient.execute(httpGet); System.out.println("----------------"+response); /** * 注:HttpClient將Response的正文及Request的POST/PUT方法中的正文均封裝成一個HttpEntity物件。 * 可以通過entity.getContenType(),entity.getContentLength()等方法獲取到正文的相關資訊。 * 但最重要的方法是通過getContent()獲取到InputStream物件。 */ HttpEntity entity3 = response.getEntity(); System.out.println("----------------"+entity3); System.out.println("----------------"+entity3.getContentType()); System.out.println("----------------"+entity3.getContentLength()); System.out.println("----------------"+entity3.getContent()); InputStream is = null; Scanner sc = null; Writer os = null; if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { try { // 2、獲取response的entity。 HttpEntity entity = response.getEntity(); // 3、獲取到InputStream物件,並對內容進行處理 is = entity.getContent(); sc = new Scanner(is); // String filename = path.substring(path.lastIndexOf('/')+1); //String filename = "d:\\2.txt"; //os = new PrintWriter(filename); String contentStr=""; while (sc.hasNext()) { //os.write(sc.nextLine()); contentStr=contentStr+sc.nextLine(); //System.out.println("------"+sc.nextLine()); } System.out.println("------"+contentStr); } catch (ClientProtocolException e) { e.printStackTrace(); } finally { if (sc != null) { sc.close(); } if (is != null) { is.close(); } if (os != null) { os.close(); } if (response != null) { response.close(); } } } } catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }