go - 重用Go http客户端

标签 go go-http

我想对params数组中的每个param进行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,
}

关于go - 重用Go http客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63306656/

相关文章:

pointers - cgo指针值改变

go - 正确的数据无法传递到Twilio

postgresql - 当我在 db(这里是 postgres)中的结构未知时,如何检索 GoLang 数据库/sql 中的值?

go - 使用uTls时如何解决www.fedex.com上的TLS错误?

go - 不应通过中间件HTTP测试

go - 如何将主页和静态文件设置在同一路径

golang http客户端返回错误的内容类型

go - 将格式化程序应用于 logrus 全局记录器

go - 使用 RSA 私钥加密消息(如在 OpenSSL 的 RSA_private_encrypt 中)

parsing - go/types 查找结构是否实现了接口(interface)