Go的一个功能强大、易扩展、易使用的http客户端请求库
Go的一个功能强大、易扩展、易使用的http客户端请求库。适合用于接口请求,模拟浏览器请求,爬虫请求。
特点
- Cookie管理器(适合爬虫和模拟请求)
- 支持HEADER、GET、POST、PUT、DELETE
- 轻松上传文件下载文件
- 支持链式调用
安装
go get github.com/Albert-Zhan/httpc
API文档
httpc在线文档
快速入门
1. 简单的请求
//新建一个请求和http客户端 req:=httpc.NewRequest(httpc.NewHttpClient()) //get请求,返回string类型的body resp,body,err:=req.SetUrl("http://127.0.0.1").Send().End() if err!=nil { fmt.Println(err) }else{ fmt.Println(resp) fmt.Println(body) }
2. 设置头信息
//新建一个http客户端 client:=httpc.NewHttpClient() //新建一个请求 req:=httpc.NewRequest(client) req.SetMethod("post").SetUrl("http://127.0.0.1") //设置头信息,返回byte类型的body resp,bodyByte,err:=req.SetHeader("HOST","127.0.0.1").Send().EndByte() if err!=nil { fmt.Println(err) }else{ fmt.Println(resp) fmt.Println(bodyByte) }
3. 设置请求信息(get)
//新建一个http客户端 client:=httpc.NewHttpClient() //新建一个请求 req:=httpc.NewRequest(client) req.SetMethod("post").SetUrl("http://127.0.0.1") //设置头信息 req.SetHeader("HOST","127.0.0.1") //设置请求信息 resp,body,err:=req.SetParam("client", "httpc").Send().End() if err!=nil { fmt.Println(err) }else{ fmt.Println(resp) fmt.Println(body) }
4. 设置请求信息(post)
//新建一个http客户端 client:=httpc.NewHttpClient() //新建一个请求 req:=httpc.NewRequest(client) req.SetMethod("post").SetUrl("http://127.0.0.1") //设置头信息 req.SetHeader("HOST","127.0.0.1") //设置请求信息 b:=body.NewUrlEncode() b.SetData("client","httpc") resp,body,err:=req.SetBody(b).Send().End() if err!=nil { fmt.Println(err) }else{ fmt.Println(resp) fmt.Println(body) }
5. 设置Cookie
//新建一个http客户端 client:=httpc.NewHttpClient() //新建一个请求 req:=httpc.NewRequest(client) //设置请求地址和头信息 req.SetUrl("http://127.0.0.1").SetHeader("HOST","127.0.0.1") //设置请求数据 req.SetData("client", "httpc") var cookies []*http.Cookie cookie:=&http.Cookie{Name:"client",Value:"httpc"} cookies= append(cookies, cookie) //添加cookie并请求 resp,bodyByte,err:=req.SetCookies(&cookies).Send().End() if err!=nil { fmt.Println(err) }else{ fmt.Println(resp) fmt.Println(bodyByte) }
6. 上传文件
//新建一个http客户端 client:=httpc.NewHttpClient() //新建一个请求 req:=httpc.NewRequest(client) req.SetMethod("post").SetUrl("http://127.0.0.1") //设置上传的文件 b:=body.NewFormData() b.SetFile("img1","./img.png") //设置附加参数 b.SetData("client","httpc") resp,body,err:=req.SetBody(b).Send().End() if err!=nil { fmt.Println(err) }else{ fmt.Println(resp) fmt.Println(body) }
7. 下载文件
//新建一个http客户端 client:=httpc.NewHttpClient() //新建一个请求 req:=httpc.NewRequest(client) //请求保存文件 resp,body,err:=req.SetUrl("http://127.0.0.1/1.zip").Send().EndFile("./test/","") if err!=nil { fmt.Println(err) }else{ fmt.Println(resp) fmt.Println(body) }
8. 开启调试
req:=httpc.NewRequest(httpc.NewHttpClient()) req.SetMethod("post").SetUrl("https://127.0.0.1") req.SetHeader("HOST","127.0.0.1") b:=body.NewUrlEncode() b.SetData("client","httpc") var cookies []*http.Cookie cookie:=&http.Cookie{Name:"client",Value:"httpc"} cookies= append(cookies, cookie) _, _, _ = req.SetBody(b).SetCookies(&cookies).SetDebug(true).Send().End()
? 在实际场景中不建议复用Request,建议每个请求对应一个Request。
高级用法
1. 设置请求超时
//新建http客户端 client:=httpc.NewHttpClient() //设置请求超时,默认值为30秒 client.SetTimeout(5*time.Second) //不设置超时 //client.SetTimeout(0) //新建一个请求 req:=httpc.NewRequest(client) req.SetMethod("post").SetUrl("http://127.0.0.1") //设置头信息,返回byte类型的body resp,bodyByte,err:=req.SetHeader("HOST","127.0.0.1").Send().EndByte() if err!=nil { fmt.Println(err) }else{ fmt.Println(resp) fmt.Println(bodyByte) }
2. 设置COOKIE管理器
//新建http客户端 client:=httpc.NewHttpClient() //新建一个cookie管理器,后面所有请求的cookie将保存在这 cookieJar:=httpc.NewCookieJar() //设置cookie管理器, client.SetCookieJar(cookieJar) //新建一个请求 req:=httpc.NewRequest(client) req.SetMethod("post").SetUrl("http://127.0.0.1") //设置头信息,返回byte类型的body resp,bodyByte,err:=req.SetHeader("HOST","127.0.0.1").Send().EndByte() if err!=nil { fmt.Println(err) }else{ //从cookie管理器中获取当前访问url保存的cookie u, _ := url.Parse("http://127.0.0.1") cookies:=cookieJar.Cookies(u) fmt.Println(cookies) fmt.Println(resp) fmt.Println(bodyByte) }
3. 设置代理
//新建http客户端 client:=httpc.NewHttpClient() //设置请求代理 client.SetProxy("http://127.0.0.1:10809") //新建一个请求 req:=httpc.NewRequest(client) req.SetMethod("post").SetUrl("http://127.0.0.1") //设置头信息,返回byte类型的body resp,bodyByte,err:=req.SetHeader("HOST","127.0.0.1").Send().EndByte() if err!=nil { fmt.Println(err) }else{ fmt.Println(resp) fmt.Println(bodyByte) }
4. 设置重定向处理
//新建http客户端 client:=httpc.NewHttpClient() //设置http客户端重定向处理函数 client.SetRedirect(func(req *http.Request, via []*http.Request) error { return http.ErrUseLastResponse }) //新建一个请求 req:=httpc.NewRequest(client) req.SetMethod("post").SetUrl("http://127.0.0.1") //设置头信息,返回byte类型的body resp,bodyByte,err:=req.SetHeader("HOST","127.0.0.1").Send().EndByte() if err!=nil { fmt.Println(err) }else{ fmt.Println(resp) fmt.Println(bodyByte) }
5. 设置ssl验证
//新建http客户端 client:=httpc.NewHttpClient() //跳过ssl验证 client.SetSkipVerify(false) //新建一个请求 req:=httpc.NewRequest(client) req.SetMethod("post").SetUrl("http://127.0.0.1") //设置头信息,返回byte类型的body resp,bodyByte,err:=req.SetHeader("HOST","127.0.0.1").Send().EndByte() if err!=nil { fmt.Println(err) }else{ fmt.Println(resp) fmt.Println(bodyByte) }
版权声明:
作者: freeclashnode
链接: https://www.freeclashnode.com/news/article-788.htm
来源: FreeClashNode
文章版权归作者所有,未经允许请勿转载。
免费节点实时更新
热门文章
- 10月9日|19M/S,Clash/V2ray/SSR/Shadowrocket免费节点订阅链接每天更新
- 10月10日|21.9M/S,V2ray/Clash/SSR/Shadowrocket免费节点订阅链接每天更新
- 10月11日|22.7M/S,Shadowrocket/Clash/V2ray/SSR免费节点订阅链接每天更新
- 9月15日|20.4M/S,Shadowrocket/V2ray/SSR/Clash免费节点订阅链接每天更新
- 10月1日|23M/S,Shadowrocket/Clash/SSR/V2ray免费节点订阅链接每天更新
- 10月8日|18.9M/S,Clash/SSR/V2ray/Shadowrocket免费节点订阅链接每天更新
- 10月5日|22.5M/S,Clash/V2ray/SSR/Shadowrocket免费节点订阅链接每天更新
- 10月7日|21.5M/S,V2ray/Clash/Shadowrocket/SSR免费节点订阅链接每天更新
- 10月6日|19.5M/S,Shadowrocket/Clash/SSR/V2ray免费节点订阅链接每天更新
- 10月2日|22.9M/S,V2ray/Shadowrocket/Clash/SSR免费节点订阅链接每天更新
最新文章
- 10月12日|20.2M/S,Shadowrocket/V2ray/SSR/Clash免费节点订阅链接每天更新
- 10月11日|22.7M/S,Shadowrocket/Clash/V2ray/SSR免费节点订阅链接每天更新
- 10月10日|21.9M/S,V2ray/Clash/SSR/Shadowrocket免费节点订阅链接每天更新
- 10月9日|19M/S,Clash/V2ray/SSR/Shadowrocket免费节点订阅链接每天更新
- 10月8日|18.9M/S,Clash/SSR/V2ray/Shadowrocket免费节点订阅链接每天更新
- 10月7日|21.5M/S,V2ray/Clash/Shadowrocket/SSR免费节点订阅链接每天更新
- 10月6日|19.5M/S,Shadowrocket/Clash/SSR/V2ray免费节点订阅链接每天更新
- 10月5日|22.5M/S,Clash/V2ray/SSR/Shadowrocket免费节点订阅链接每天更新
- 10月4日|22M/S,Clash/V2ray/SSR/Shadowrocket免费节点订阅链接每天更新
- 10月3日|20.9M/S,SSR/V2ray/Clash/Shadowrocket免费节点订阅链接每天更新