首页 > 解决方案 > 重用 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...
}

标签: gogo-http

解决方案


我认为您只想保留 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,
}

推荐阅读