Ai
1 Star 1 Fork 1

lorock/go-dingtalk-sdk

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
dohttp.go 1.55 KB
一键复制 编辑 原始数据 按行查看 历史
lorock 提交于 2020-11-15 22:27 +08:00 . 初始化仓库
package dingtalkrobot
import (
"bytes"
"context"
"fmt"
"net"
"net/http"
"time"
"golang.org/x/net/context/ctxhttp"
)
var (
// myHTTPClient myHTTPClient
myHTTPClient *http.Client
)
const (
defaultMaxIdleConns int = 100
defaultMaxIdleConnsPerHost int = 100
defaultIdleConnTimeout = 90 * time.Second
defaultDialTimeout = 30 * time.Second
defaultKeepAlive = 30 * time.Second
)
func init() {
myHTTPClient = initDefaultHTTPClient()
}
// initDefaultHTTPClient for connection re-use
func initDefaultHTTPClient() *http.Client {
client := &http.Client{
Transport: &http.Transport{
Proxy: http.ProxyFromEnvironment,
DialContext: (&net.Dialer{
Timeout: defaultDialTimeout,
KeepAlive: defaultKeepAlive,
}).DialContext,
MaxIdleConns: defaultMaxIdleConns,
MaxIdleConnsPerHost: defaultMaxIdleConnsPerHost,
IdleConnTimeout: defaultIdleConnTimeout,
},
}
return client
}
func doRequest(ctx context.Context, callMethod string, endPoint string, header map[string]string, body []byte) (*http.Response, error) {
req, err := http.NewRequest(callMethod, endPoint, bytes.NewBuffer(body))
if err != nil {
return nil, err
}
if header != nil && len(header) > 0 {
for k, v := range header {
req.Header.Set(k, v)
}
}
req = req.WithContext(ctx)
// use myHttpClient to send request
response, err := ctxhttp.Do(req.Context(), myHTTPClient, req)
if err != nil {
return nil, err
}
if response == nil {
return nil, fmt.Errorf("reponse is nil, please check it")
}
return response, nil
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/lorock/go-dingtalk-sdk.git
git@gitee.com:lorock/go-dingtalk-sdk.git
lorock
go-dingtalk-sdk
go-dingtalk-sdk
v1.0.6

搜索帮助