Go语言HttpRequest项目源码地址: https://github.com/kirinlabs/HttpRequest
主要实现功能
支持常用的GET、POST、DELETE、PUT等
GET 除了正常请求url,也可以附带"name=flyfreely&address=beijing"或者map[string]interface{} 两种参数,包会自动整合到QueryString中
POST 支持string, []byte, *bytes.Reader, *bytes.Buffer, *strings.Reader, map[string]interface{}等参数; 如果发送JSON请求,几乎可以支持发送所有数据类型。
支持自定义Transport
目录
具有快速构建Headers、Cookies、设置超时时间、请求、耗时、打印请求信息等功能
安装:
go get https://github.com/kirinlabs/HttpRequest
发送请求
导入HttpRequest
import "github.com/kirinlabs/HttpRequest"
实例化:
req := HttpRequest.NewRequest()
然后,尝试获取某个网页。我们来获取 Github 的公共时间线
res,err := req.Get("https://api.github.com/events")
返回一个res的Response对象和err的Error对象
自定义Transport
var transport *http.Transport
func init() {
transport = &http.Transport{
DialContext: (&net.Dialer{
Timeout: 30 * time.Second,
KeepAlive: 30 * time.Second,
DualStack: true,
}).DialContext,
MaxIdleConns: 100,
IdleConnTimeout: 90 * time.Second,
TLSHandshakeTimeout: 5 * time.Second,
ExpectContinueTimeout: 1 * time.Second,
}
}
func demo(){
// Use http.DefaultTransport
res, err := HttpRequest.Get("http://127.0.0.1:8080")
// Use custom Transport
res, err := HttpRequest.Transport(transport).Get("http://127.0.0.1:8080")
}
Post 请求
//无参请求
res,err := req.Post("https://www.baidu.com")
//发送整数类型
res,err := req.Post("https://www.baidu.com",uint32(100))
//发送[]byte
res,err := req.Post("https://www.baidu.com",[]byte("bytes data"))