diff --git a/helper/http_helper.go b/helper/http_helper.go index 9b8d6aa..3c0889a 100644 --- a/helper/http_helper.go +++ b/helper/http_helper.go @@ -11,9 +11,90 @@ import ( "bytes" "encoding/json" "errors" + "io" "net/http" + "net/url" + "strings" ) +// vals := url.Values{} +// vals.Add("name","zhaofan") +// vals.Add("age","22") +func RequestPostForm(url string, vals url.Values) ([]byte, error) { + resp, err := http.PostForm(url, vals) + if err != nil { + return nil, err + } + body, err := io.ReadAll(resp.Body) + if err != nil { + return nil, err + } + return body, nil +} + +func RequestPostJson(url string, data map[string]any) ([]byte, error) { + bd, err := json.Marshal(data) + if err != nil { + return nil, err + } + resp, err := http.Post(url, "application/json", bytes.NewReader(bd)) + if err != nil { + return nil, err + } + body, err := io.ReadAll(resp.Body) + if err != nil { + return nil, err + } + return body, nil +} + +// 比较完整的 get 实现 +func RequestGet(url string, vals url.Values, headers map[string]string) ([]byte, error) { + req, err := http.NewRequest("GET", url, strings.NewReader(vals.Encode())) + if err != nil { + return nil, err + } + for hd, val := range headers { + req.Header.Set(hd, val) + } + client := &http.Client{} + resp, err := client.Do(req) + if err != nil { + return nil, err + } + body, err := io.ReadAll(resp.Body) + if err != nil { + return nil, err + } + return body, nil +} + +// 默认是 json 请求 +func RequestPost(url string, vals url.Values, headers map[string]string) ([]byte, error) { + req, err := http.NewRequest("POST", url, strings.NewReader(vals.Encode())) + if err != nil { + return nil, err + } + if len(headers) == 0 { + headers["Content-Type"] = "application/json" + } + for hd, val := range headers { + req.Header.Set(hd, val) + } + + client := &http.Client{} + resp, err := client.Do(req) + if err != nil { + return nil, err + } + body, err := io.ReadAll(resp.Body) + if err != nil { + return nil, err + } + return body, nil +} + +// 旧的方法,不建议使用 func RequestJson(url string, data []byte) (*http.Response, error) { res, err := http.Post(url, "application/json", bytes.NewBuffer(data)) if err != nil {