HttpClient配置及示例代碼
阿新 • • 發佈:2017-10-07
現在 generated null 編碼 程序 可能 void 資源 內容
HttpComponents是Apache 旗下的項目。其中有一個HttpClient,即HTTP客戶端。
...
...
大多時候我們只需要HttpClient,httpCore是開發服務端的我們可以一般都不需要。
之後我們建立項目,導入jar包,開始開發
第一個示例:
package com.zhi.httpClient; import java.io.IOException; import org.apache.http.HttpEntity; import org.apache.http.ParseException; import org.apache.http.client.ClientProtocolException; 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; import org.apache.http.util.EntityUtils; public class Demo { public static void main(String[] args) { CloseableHttpClient closeableHttpClient=HttpClients.createDefault(); //1、創建實例 //CloseableHttpClient意思是:可關閉的 HttpGet httpGet=new HttpGet("http://www.huimsoft.com"); //2、創建實例 //限制類型http://www.tuicool.com/ CloseableHttpResponse closeableHttpResponse=null; try { closeableHttpResponse=closeableHttpClient.execute(httpGet); //3、執行 } catch (ClientProtocolException e) { //客戶端協議異常 // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { //IO異常 // TODO Auto-generated catch block e.printStackTrace(); } HttpEntity httpEntity=closeableHttpResponse.getEntity(); //4、獲取實體 String str=""; try { str=EntityUtils.toString(httpEntity, "utf-8"); //獲取網頁內容,並且指定編碼 } catch (ParseException e) { //解析異常 // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println(str); //關閉closeableHttpResponse try { closeableHttpResponse.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } //關閉closeableHttpClient try { closeableHttpClient.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
代碼有很多,但是很多是在處理異常,所以我們也可以使用throws在方法上拋出,以簡化代碼格式,讓其更好看。
package com.zhi.httpClient; import org.apache.http.HttpEntity; 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; import org.apache.http.util.EntityUtils; public class Test { public static void main(String[] args) throws Exception { CloseableHttpClient closeableHttpClient=HttpClients.createDefault(); //1、創建實例 HttpGet httpGet=new HttpGet("http://www.huimsoft.com"); //2、創建實例 CloseableHttpResponse closeableHttpResponse=closeableHttpClient.execute(httpGet); //3、執行 HttpEntity httpEntity=closeableHttpResponse.getEntity(); //4、獲取實體 System.out.println(EntityUtils.toString(httpEntity, "utf-8")); //5、獲取網頁內容,並且指定編碼 closeableHttpResponse.close(); closeableHttpClient.close(); } }
當然我們要封裝一個方法,然後使用throws拋出,最好不要在main上直接拋出異常。
其實有些網站讀取時是有延時的,這個時候才用try...catch來處理比較好。
HTTP 協議可能是現在 Internet 上使用得最多、最重要的協議了,越來越多的 Java 應用程序需要直接通過 HTTP 協議來訪問網絡資源。雖然在 JDK 的 java net包中已經提供了訪問 HTTP 協議的基本功能,但是對於大部分應用程序來說,JDK 庫本身提供的功能還不夠豐富和靈活。
搞爬蟲,主要是用HttpClient模擬瀏覽器請求第三方站點url,然後響應,獲取網頁數據,然後用Jsoup來提取我們需要的信息。
HttpClient配置及示例代碼