|
@@ -0,0 +1,101 @@
|
|
|
|
+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 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
|
|
|
|
+}
|