使用http.Client函數發送客製化的HTTP請求並取得回應狀態碼及回應內容,並設定逾時時間
在Go語言中,我們可以使用net/http
包來發送HTTP請求並獲取回應。其中,可以使用http.Client
類型來傳送客製化的HTTP請求,並設定逾時時間。
建立HTTP客戶端
首先,我們需要建立一個http.Client
類型的對象,用於傳送HTTP請求。可以透過設定Transport
欄位來設定HTTP傳輸相關的參數,例如代理,TLS配置等。預設情況下,http.DefaultTransport
物件用於傳送請求,而http.DefaultClient
物件則使用它。
以下是建立HTTP客戶端的範例程式碼:
client := &http.Client{ Timeout: time.Second * 10, }
在上述程式碼中,我們建立了一個HTTP客戶端物件client
,並設定了逾時時間為10秒。
傳送HTTP請求
使用http.Client
物件傳送HTTP請求,可以使用http.NewRequest
函數建立一個新的http.Request
對象,然後使用http.Client
的Do
方法傳送請求並取得回應。
以下是發送HTTP請求的範例程式碼:
req, err := http.NewRequest("GET", "https://example.com", nil) if err != nil { log.Fatal(err) } resp, err := client.Do(req) if err != nil { log.Fatal(err) } defer resp.Body.Close()
在上述程式碼中,我們建立了一個GET請求,目標URL為https://example.com
。然後,我們使用client.Do(req)
方法發送請求,並取得到resp
物件作為回應。
取得回應狀態碼及內容
我們可以使用resp.StatusCode
欄位來取得HTTP回應的狀態碼,使用ioutil.ReadAll
函數來讀取回應內容。
以下是取得回應狀態碼及內容的範例程式碼:
statusCode := resp.StatusCode body, err := ioutil.ReadAll(resp.Body) if err != nil { log.Fatal(err) }
在上述程式碼中,我們使用resp.StatusCode
來取得回應的狀態碼,使用ioutil.ReadAll
函數來讀取回應內容,並將其儲存在body
變數中。
完整範例
以下是一個完整的範例,示範如何使用http.Client
傳送客製化的HTTP請求,並取得回應狀態碼及內容,並設定逾時時間:
package main import ( "fmt" "io/ioutil" "log" "net/http" "time" ) func main() { client := &http.Client{ Timeout: time.Second * 10, } req, err := http.NewRequest("GET", "https://example.com", nil) if err != nil { log.Fatal(err) } resp, err := client.Do(req) if err != nil { log.Fatal(err) } defer resp.Body.Close() statusCode := resp.StatusCode body, err := ioutil.ReadAll(resp.Body) if err != nil { log.Fatal(err) } fmt.Println("Response status code:", statusCode) fmt.Println("Response body:", string(body)) }
在上述程式碼中,我們建立了一個HTTP客戶端物件client
,設定了逾時時間為10秒。然後,我們發送一個GET請求並取得到回應的狀態碼及內容,並列印輸出。
透過使用http.Client
發送客製化的HTTP請求,並設定逾時時間,我們可以更靈活地發送HTTP請求,並根據回應的狀態碼及內容進行對應的處理。
以上是使用http.Client函數發送客製化的HTTP請求並取得回應狀態碼及回應內容,並設定逾時時間的詳細內容。更多資訊請關注PHP中文網其他相關文章!