package util import ( "bytes" "encoding/json" "io" "net/http" "net/url" ) func HttpGet(url string) (string, error) { // 创建一个HTTP客户端 client := &http.Client{} // 创建一个GET请求 req, err := http.NewRequest("GET", url, nil) if err != nil { return "", err } // 发送请求并获取响应 resp, err := client.Do(req) if err != nil { return "", err } defer func(Body io.ReadCloser) { err := Body.Close() if err != nil { } }(resp.Body) // 读取响应的内容 body, err := io.ReadAll(resp.Body) if err != nil { return "", err } return string(body), nil } func HttpPostJsonResponseString(url string, params map[string]string) (string, error) { jsonData, err := json.Marshal(params) if err != nil { return "", err } resp, err := http.Post(url, "application/json", bytes.NewBuffer(jsonData)) if err != nil { return "", err } defer func(Body io.ReadCloser) { err := Body.Close() if err != nil { } }(resp.Body) body, err := io.ReadAll(resp.Body) if err != nil { return "", err } return string(body), nil } func HttpPostWithHeaders(baseUrl string, headers map[string]string, params map[string]string) (string, error) { // 构建请求体 data := url.Values{} for key, value := range params { data.Set(key, value) } requestBody := bytes.NewBufferString(data.Encode()) // 创建请求 req, err := http.NewRequest("POST", baseUrl, requestBody) if err != nil { return "", err } // 设置请求头 for key, value := range headers { req.Header.Set(key, value) } // 发送请求 client := &http.Client{} resp, err := client.Do(req) if err != nil { return "", err } body, err := io.ReadAll(resp.Body) return string(body), nil } func HttpGetStringAddHeadersResponseString(baseUrl string, headers map[string]string, params map[string]string) (string, error) { // 将参数编码到URL中 u, _ := url.Parse(baseUrl) q := u.Query() for key, value := range params { q.Add(key, value) } u.RawQuery = q.Encode() // 创建请求 req, err := http.NewRequest("GET", u.String(), nil) if err != nil { return "", err } // 设置请求头 for key, value := range headers { req.Header.Set(key, value) } // 发送请求 client := &http.Client{} resp, err := client.Do(req) if err != nil { return "", err } // 读取响应体 body, err := io.ReadAll(resp.Body) if err != nil { return "", err } err = resp.Body.Close() if err != nil { return "", err } result := string(body) //log.GlobalLogger.Info("发送http请求,请求路径=", baseUrl, ",请求头=", headers, "请求参数=", params, "请求结果=", result) return result, nil }