1. 程式人生 > >httpclient傳送get請求並接收相應資料

httpclient傳送get請求並接收相應資料

終於開始我的實習生涯了,打算每星期發一篇自己遇到的需求或者總結,希望各位大神批評指正,也喜歡能來幾個志同道合和我一起來學習,走上java大神之路

廢話不多說,最近由於工作原因,開始接觸netty,service已經也好,需要我做一個httpclient去傳送http請求,網上搜了一下,一大堆的例項,不過有一些跑不起來,這裡就為自己總結一下。

首先建立一個maven專案


之後引入相應架包,就是這裡調了好久。架包版本不同會發生衝突,最新的版本猜想可能和自己的jdk也會發生衝突,我的是1.7的jdk,而現在最新的httpclient是4.5.3,可能這個對應的時1.8的jdk,本來想用最新的這個版本,可惜各種報錯,最終選擇了4.31版本
    <dependencies>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.3.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpcore</artifactId>
            <version>4.3.1</version>
        </dependency>
    </dependencies>


需要注意的是這裡的httpcore和httpclient所選版本要選擇能依賴的 這是我選擇了幾個版本之後嘗試之後唯一可以用的 下面就是程式碼:
package com.slz.demo.util;

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;

import java.io.IOException;

/**
 * Created by shileizhou on 17-4-8.
 */
public class HttpClientUtils {

    /**
     * 傳送 get請求
     */
    public static void get(String url) {
        CloseableHttpClient httpclient = HttpClients.createDefault();
        try {
            // 建立httpget.
            HttpGet httpget = new HttpGet(url);
            System.out.println("executing request " + httpget.getURI());
            // 執行get請求.
            CloseableHttpResponse response = httpclient.execute(httpget);
            try {
                // 獲取響應實體
                HttpEntity entity = response.getEntity();
                System.out.println("--------------------------------------");
                // 列印響應狀態
                System.out.println(response.getStatusLine());
                if (entity != null) {
                    // 列印響應內容長度
                    System.out.println("Response content length: "
                            + entity.getContentLength());
                    // 列印響應內容
                    System.out.println("Response content: "
                            + EntityUtils.toString(entity));
                }
                System.out.println("------------------------------------");
            } finally {
                response.close();
            }
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (ParseException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            // 關閉連線,釋放資源
            try {
                httpclient.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

在主函式中跑起來
package com.slz.demo.client;

import com.slz.demo.util.HttpClientUtils;


/**
 * Created by shileizhou on 17-4-8.
 */
public class HttpClient {
    public static void main(String[] args){
        HttpClientUtils.get("https://www.baidu.com?word=劉德華");
    }


}


最後的結果為

今天就先分享這些,希望有小夥伴能一起學習 806029174