go - 重用 Go http 客户端
问题描述
我想为 params 数组中的每个参数发出 get 请求。网址是静态的。有没有办法为每次迭代重用我的自定义 http 客户端?我不想为每个请求重置标头。理想情况下,我想client.Do(param)
为每次迭代做类似的事情。
client := &http.Client{}
for _, param := range params {
uri := url + param
req, err := http.NewRequest(http.MethodGet, uri, nil)
req.Header.Add("Cookie", cookie)
resp, _ := client.Do(req)
defer resp.Body.Close()
// do something...
}
解决方案
我认为您只想保留 cookie,而不必在每个请求上设置它?如果是这种情况,您可以这样做:
import (
"net/http"
"net/http/cookiejar"
"golang.org/x/net/publicsuffix"
)
// All users of cookiejar should import "golang.org/x/net/publicsuffix"
cookieJar, err := cookiejar.New(&cookiejar.Options{PublicSuffixList: publicsuffix.List})
if err != nil {
panic(err)
}
var cookies []*http.Cookie
cookies = append(cookies, cookie)
u, err := url.Parse("http://whateversite.com")
if err != nil {
panic(err)
}
jar.SetCookies(u, cookies)
client := &http.Client{
Jar: cookieJar,
}
推荐阅读
- python - python 在使用 os.listdir 时会跳过目录中的一些文件名并使用扩展名进行过滤
- javascript - 在Javascript中将数据数组排列成矩阵顺序
- reactjs - 我无法在本机反应中使用 facebook 登录获取用户的手机号码
- php - 尝试在表单提交时插入 NULL 日期但得到 00:00
- google-cloud-platform - BigQuery - 哪个项目获得成本:数据集还是查询?
- c# - 完全删除 WPF 中的网格线
- qt - 从 Linux 交叉编译到 Windows 时是否可以强制 Qt 使用 ANGLE?
- javascript - jQuery Validate 方法未注册
- postgresql - Kubernetes pod 可以动态更改自己的标签吗?
- javascript - Django:使用按钮添加动态表单集