標籤:... url creat package 擷取 demo jdk 方法 def
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 blocke.printStackTrace();} catch (IOException e) { //IO異常// TODO Auto-generated catch blocke.printStackTrace();}HttpEntity httpEntity=closeableHttpResponse.getEntity(); //4、擷取實體String str="";try {str=EntityUtils.toString(httpEntity, "utf-8"); //擷取網頁內容,並且指定編碼} catch (ParseException e) { //解析異常// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}System.out.println(str);//關閉closeableHttpResponsetry {closeableHttpResponse.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}//關閉closeableHttpClienttry {closeableHttpClient.close();} catch (IOException e) {// TODO Auto-generated catch blocke.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配置及範例程式碼