代码拉取完成,页面将自动刷新
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
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。