package httpclient import ( "io/ioutil" "net/http" "time" ) var Default *http.Client func init() { Default = NewClient() } func NewClient() *http.Client { // TODO: 相关参数可以考虑传参定义 tr := http.DefaultTransport.(*http.Transport).Clone() tr.MaxIdleConnsPerHost = 32 tr.MaxConnsPerHost = 32 tr.MaxIdleConns = 64 tr.IdleConnTimeout = time.Second * 30 tr.DisableKeepAlives = false client := &http.Client{ Transport: tr, Timeout: time.Second * 5, } return client } func GetRemoteContent(url string) (string, error) { resp, err := Default.Get(url) if err != nil { return "", err } defer resp.Body.Close() body, err2 := ioutil.ReadAll(resp.Body) if err2 != nil { return "", err } return string(body), nil } func GetRemoteBody(url string) ([]byte, error) { resp, err := Default.Get(url) if err != nil { return nil, err } defer resp.Body.Close() body, err2 := ioutil.ReadAll(resp.Body) if err2 != nil { return nil, err } return body, nil }