1. 程式人生 > >Go語言之Golang http請求第三方庫HttpRequest

Go語言之Golang http請求第三方庫HttpRequest

Golang的第三方http請求包 https://github.com/kirinlabs/HttpRequest

具有快速構建Headers、Cookies、設定超時時間、請求耗時等功能

不管是Get還是Post請求都可以快速構建併發送請求,甚至還支援Put和Delete等方法

當設定req.Debug(true),還可以列印每次請求的相關資訊,很方便開發過程中的除錯工作

安裝:

例項化:

    req := HttpRequest.NewRequest()

當請求https協議時提示x509: certificate signed by unknown authority時,可關閉證書驗證

    req.SetTLSClient(&tls.Config{InsecureSkipVerify: true})

設定超時:

    req.SetTimeout(5)

開啟除錯模式:

    req.Debug(true)

設定Headers:

req.SetHeaders(map[string]string{     "Content-Type": "application/x-www-form-urlencoded", //這也是HttpRequest包的預設設定 })

設定Cookies

    req.SetCookies(map[string]string{})

而且還支援連線操作

req := HttpRequest.NewRequest().Debug(true).SetTimeout(5).SetHeader()

獲取返回的Response物件

    resp.Response()

獲取返回碼

    resp.StatusCode()

獲取Body主體資訊

    resp.Body() 

    返回[]byte和error

返回資訊Json格式化

    body,err:=resp.Body()

    fmt.Pringln(resp.Json(body))

獲取請求耗時

    resp.Time() string   單位是毫秒

以下是試用例項程式碼:

package main
 
import (
   "HttpRequest"
   "fmt"
   "log"
)
 
func main() {
 
   req := HttpRequest.NewRequest()
 
   // 設定超時時間,不設定時,預設30s
   req.SetTimeout(5)
 
   // 設定Headers
   req.SetHeaders(map[string]string{
      "Content-Type": "application/x-www-form-urlencoded", //這也是HttpRequest包的預設設定
   })
 
   // 設定Cookies
   req.SetCookies(map[string]string{
      "sessionid": "LSIE89SFLKGHHASLC9EETFBVNOPOXNM",
   })
 
   postData := map[string]interface{}{
      "id":    1,
      "title": "csdn",
   }
 
   // GET 預設呼叫方法
   resp, err := req.Get("http://127.0.0.1:8000?name=flyfreely", nil)
 
   // GET 傳參呼叫方法
   // 第2個引數預設為nil,也可以傳參map[string]interface{}
   // 第2個引數不為nil時,會把傳入的map以query傳參的形式重新構造新url
   // 新的URL: http://127.0.0.1:8000?name=flyfreely&id=1&title=csdn
 
   //resp, err := req.Get("http://127.0.0.1:8000?name=flyfreely", postData)
 
   // POST 呼叫方法
 
   //resp, err := req.Post("http://127.0.0.1:8000", postData)
 
   if err != nil {
      log.Println(err)
      return
   }
 
   if resp.StatusCode() == 200 {
      body, err := resp.Body()
      
      if err != nil {
         log.Println(err)
         return
      }
      
      fmt.Println(string(body))
 
      fmt.Println(resp.Json(body))
   }
}

原文:https://blog.csdn.net/flyfreelyit/article/details/80281467