使用http.NewRequest并发请求同一个接口(参数不一样)时,一段时间后,会提示下面这个错误:谁知道是什么原因吗
connectex: Only one usage of each socket address (protocol/network address/port) is normally permitted
更多评论
这是发起请求的代码:
```
func Get(api string, params, headers map[string]string, timeout int) (error, int, interface{}) {
// 创建 http 客户端
defaultTransport := http.DefaultTransport
tr := *defaultTransport.(*http.Transport)
tr.TLSClientConfig = &tls.Config{
InsecureSkipVerify: true,
}
tr.DisableKeepAlives = true
client := &http.Client{Transport: &tr}
// 设置超时时间
if timeout > 0 {
client.Timeout = time.Duration(timeout) * time.Second
} else {
client.Timeout = time.Duration(5) * time.Second
}
// 创建请求
req, _ := http.NewRequest("GET", api, nil)
// GET 请求携带查询参数
q := req.URL.Query()
if len(params) > 0 {
for key, value := range params {
q.Add(key, value)
}
}
req.URL.RawQuery = q.Encode()
// 设置请求头
if len(headers) > 0 {
for key, value := range headers {
req.Header.Set(key, value)
}
}
// 发送请求
req.Header.Set("Connection", "close")
resp, err := client.Do(req)
if err != nil {
if strings.Contains(err.Error(), "Timeout") {
return Get(api, params, headers, timeout)
}
// 上报日志
return err, 0, nil
}
// 关闭连接
defer resp.Body.Close()
// 读取内容
body, err := io.ReadAll(resp.Body)
if err != nil {
// 上报日志
return err, resp.StatusCode, nil
}
return nil, resp.StatusCode, string(body)
}
```
#1