package internal import ( "bytes" "encoding/json" "fmt" "github.com/gin-gonic/gin" "io" "io/ioutil" "mime/multipart" "net/http" "strings" "wss-pool/config" "wss-pool/logging/applogger" "wss-pool/logging/perflogger" ) var ( ResultStr = "" QueryError = "Query failed" QuerySuccess = "query was successful" QueryToken = "Token failure" ParameterError = "参数错误" PhoneError = "电话号码不正确" PassWordError = "密码不正确" TokenError = "登录成功并且生成新的token" UserIdError = "用户Id不正确" CodeError = "验证码不正确" ) func HttpGet(url string) (string, error) { resp, err := http.Get(url) if err != nil { return "", err } defer resp.Body.Close() result, err := ioutil.ReadAll(resp.Body) if err != nil { applogger.Error("ioutil.ReadAll err: %v", err) return "", err } return string(result), err } // 统一请求Get方法 func HttpGetApi(url string) (map[string]interface{}, error) { logger := perflogger.GetInstance() logger.Start() resp, err := http.Get(url) if err != nil { return nil, err } defer resp.Body.Close() //logger.StopAndLog("GET", url) var status map[string]interface{} if err := json.NewDecoder(resp.Body).Decode(&status); err != nil { applogger.Error("NewDecoder err: %v", err) return nil, err } return status, err } func GetWithHeader(url string, headers map[string]string) (map[string]interface{}, error) { client := &http.Client{} req, err := http.NewRequest("GET", url, nil) if err != nil { return nil, err } for key, header := range headers { req.Header.Set(key, header) } resp, err := client.Do(req) if err != nil { return nil, err } defer resp.Body.Close() result, err := ioutil.ReadAll(resp.Body) if err != nil { applogger.Error("select err: %v", err) return nil, err } if strings.Contains(string(result), "html") { return nil, nil } var status map[string]interface{} if err := json.NewDecoder(resp.Body).Decode(&status); err != nil { applogger.Error("json NewDecoder err: %v", err) return nil, err } return status, nil } // 股票静态数据接入 func HttpGetDo(url string) (string, error) { req, err := http.NewRequest("GET", url, nil) if err != nil { applogger.Error("http NewRequest err: %v", err) return "", err } req.Header.Add("X-RapidAPI-Key", config.Config.ShareGather.RapidApiKey) req.Header.Add("X-RapidAPI-Host", config.Config.ShareGather.RapidApiHost) res, err := http.DefaultClient.Do(req) if err != nil { applogger.Error("http DefaultClient Do err: %v", err) return "", err } defer res.Body.Close() body, err := io.ReadAll(res.Body) if err != nil { applogger.Error("io ReadAll err: %v", err) return "", err } return string(body), nil } func HttpGetDoNew(url string) (map[string]interface{}, error) { req, err := http.NewRequest("GET", url, nil) if err != nil { applogger.Error("NewRequest err: %v", err) return nil, err } req.Header.Add("X-RapidAPI-Key", config.Config.ShareGather.RapidApiKey) req.Header.Add("X-RapidAPI-Host", config.Config.ShareGather.RapidApiHost) res, err := http.DefaultClient.Do(req) if err != nil { applogger.Error("http DefaultClient Do err: %v", err) return nil, err } defer res.Body.Close() var status map[string]interface{} if err := json.NewDecoder(res.Body).Decode(&status); err != nil { applogger.Error("json NewDecoder err: %v", err) return nil, err } return status, nil } func HttpPost(url string, body string) (string, error) { resp, err := http.Post(url, "application/json", strings.NewReader(body)) if err != nil { return "", err } defer resp.Body.Close() result, err := ioutil.ReadAll(resp.Body) if err != nil { return "", err } return string(result), err } func HttpPostFrom(url string, postData map[string]string) (string, error) { fmt.Println(url) payload := &bytes.Buffer{} w := multipart.NewWriter(payload) for k, v := range postData { w.WriteField(k, v) } w.Close() client := &http.Client{} req, _ := http.NewRequest("POST", url, payload) req.Header.Set("Content-Type", w.FormDataContentType()) resp, err := client.Do(req) if err != nil { return "", err } data, err := ioutil.ReadAll(resp.Body) resp.Body.Close() return string(data), err } // Unified return format func GinResult(code int, value interface{}, msg string) interface{} { return gin.H{ "code": code, "data": value, "message": msg, } }