目錄
安裝
go get https://github.com/kirinlabs/HttpRequest
發送請求
導入HttpRequest
import "github.com/kirinlabs/HttpRequest"
實例化
req := HttpRequest.NewRequest()
Get請求
然后,嘗試獲取某個網頁。我們來獲取 Github 的公共時間線
返回一個res的Response對象和err的Error對象
res,err := req.Get("https://api.github.com/events")
Post 請求
//無參請求
res,err := req.Post("https://www.baidu.com")
//請求體為文本
res,err := req.Post("https://www.baidu.com","hello")
//請求體為Json字符串
res,err := req.Post("https://www.baidu.com","{\"name\":\"github\"}")
//map傳參
res.err := req.Post("https://www.baidu.com",map[string]interface{}{
"name":"github",
"type":1,
})
也可以不用實例化,直接發送請求
快速發送Get請求
res,err := HttpRequest.Get("https://www.baidu.com")
res,err := HttpRequest.Get("https://www.baidu.com","title=baidu")
快速發送Post請求
res,err := HttpRequest.Post("https://www.baidu.com")
res,err := HttpRequest.Post("https://www.baidu.com","title=baidu&type=pdf")
res,err := HttpRequest.Post("https://www.baidu.com",map[string]interface{}{
"title":"baidu",
})
快速發送JSON請求
res,err := HttpRequest.JSON().Post("https://www.baidu.com",map[string]interface{}{
"title":"baidu",
})
res,err := HttpRequest.JSON().Post("https://www.baidu.com",`{"title":"baidu","type":"pdf"}`)
傳遞URL參數
你想為URL的查詢字符串(query string)傳遞數據。如:手工構建URL,http://www.baidu.com/index?key=value。HttpRequest允許你使用第2個參數以字符串"id=100&name=github"或map[string]interface{}{"id":10,"name":"github"}字典的形式把數據傳遞給URL:
手工傳參
res,err := req.Get("https://www.baidu.com/index?name=github")
字符串傳參
res,err := req.Get("https://www.baidu.com/index?name=github","id=100&type=1")
map傳參
res,err := req.Get("https://www.baidu.com/index?name=github",map[string]interface{}{
"id":10,
"type":1,
})
響應內容
能讀取服務器響應的內容
res,err := req.Post("https://api.github.com/events")
獲取服務器返回的內容
body,err := res.Body() fmt.Println(string(body))
獲取服務器響應狀態碼
res.StatusCode()
獲取服務器響應Headers
res.Headers()
返回一個map[string]string的字典
獲取請求響應時間
res.Time()
Json響應內容
HttpRequest內置JSON解碼,來解析JSON數據
//Format the json return value body, err := res.Json() fmt.Println(body)
如果JSON解碼失敗,會返回一個err錯誤
定制請求頭
如果想為請求添加HTTP頭部信息,只需要簡單的傳一個map給SetHeaders方法
req.SetHeaders(map[string]string{
"Content-Type":"application/json",
"Source":"api",
})
注:所有header值必須是字符串,SetHeaders可以多次調用,如果Key重復則會覆蓋前面設置的值
BasicAuth 認證
如果想為請求添加HTTP頭部信息,只需要簡單的傳一個map給SetHeaders方法
req.SetBasicAuth("username","password")
JSON請求
如果想以json方式發送請求,HttpRequest支持2種方式
設置Header頭部信息
req.SetHeaders(map[string]string{"Content-Type":"application/json"})
req.Post("https://www.baidu.com","{\"name\":\"github\"}")
調用req.JSON()內置方法
//直接發磅Json字符串參數
res,err := req.JSON().Post("https://www.baidu.com","{\"name\":\"github\"}")
//自動將Map以Json方式發送參數
res,err := req.JSON().Post("https://www.baidu.com",map[string]interface{}{
"name":"github"
})
Cookie
req.SetCookies(map[string]string{
"name":"jason"
})
超時
req.SetTimeout(5)
關閉證書驗證
當請求https協議時提示x509: certificate signed by unknown authority時,可關閉證書驗證
req.SetTLSClient(&tls.Config{InsecureSkipVerify: true})
調試模式
req.Debug(true)
連接操作
而且還支持連接操作
req := HttpRequest.NewRequest().Debug(true).SetTimeout(5).SetHeader()
Respone對象
獲取返回的Response對象 resp.Response() 獲取返回碼 resp.StatusCode() 獲取Body主體信息 resp.Body() 獲取請求耗時 resp.Time() string 單位是毫秒 獲取真實Url res.Url()
