contrib/config_ecs_instance_connect/agent/util/httputil.go (76 lines of code) (raw):

package util import ( "config_ecs_instance_connect/agent/log" "errors" "github.com/kirinlabs/HttpRequest" "net" "net/http" "time" ) func GetHTTPTransport() *http.Transport { _transport := &http.Transport{ DialContext: (&net.Dialer{ Timeout: 10 * time.Second, KeepAlive: 10 * time.Second, }).DialContext, } return _transport } func HttpGet(url string) (string, error) { return HttpGetWithHeaders(url, nil) } func HttpGetWithHeaders(url string, headers map[string]string) (string, error) { req := HttpRequest.Transport(GetHTTPTransport()) // 设置超时时间,不设置时,默认30s req.SetTimeout(time.Second * 10) req.SetHeaders(headers) res, err := req.Get(url) if err != nil { log.Info(url, err) return "", err } defer res.Close() content, _ := res.Content() if err == nil && res.StatusCode() > 400 { err = errors.New("http code error" + string(res.StatusCode())) } log.Info(url, content, err) return content, err } func HttpPutWithHeaders(url string, headers map[string]string) (string, error) { req := HttpRequest.Transport(GetHTTPTransport()) req.SetTimeout(time.Second * 10) req.SetHeaders(headers) res, err := req.Put(url) if err != nil { log.Info(url, err) return "", err } defer res.Close() content, _ := res.Content() if err == nil && res.StatusCode() > 400 { err = errors.New("http code error" + string(res.StatusCode())) } log.Info(url, content, err) return content, err } func HttpPost(url string, data string, contentType string) (string, error) { req := HttpRequest.Transport(GetHTTPTransport()) // 设置超时时间,不设置时,默认30s req.SetTimeout(time.Second * 10) // 设置Headers if contentType == "text" { req.SetHeaders(map[string]string{ "Content-Type": "text/plain; charset=utf-8", //这也是HttpRequest包的默认设置 }) } else { req.SetHeaders(map[string]string{ "Content-Type": "application/json; charset=utf-8", //这也是HttpRequest包的默认设置 }) } res, err := req.Post(url, data) defer res.Close() content, _ := res.Content() if err == nil && res.StatusCode() > 400 { err = errors.New("http code error: " + string(res.StatusCode())) } log.Info(url, content, err) return content, err }