liuxiaolong
2020-06-05 ffeb4805bed04e94efa850a04bd99d0408e4fd56
add requtil
2个文件已添加
74 ■■■■■ 已修改文件
extend/util/requtil.go 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/SdkDownLoad_test.go 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
extend/util/requtil.go
New file
@@ -0,0 +1,73 @@
package util
import (
    "bytes"
    "encoding/json"
    "github.com/ajg/form"
    "io/ioutil"
    "net/http"
    "strings"
)
const (
    DATA_URL_PREFIX      = "/data/api-v"
    CONTENT_TYPE_FORM    = "application/x-www-form-urlencoded"
    CONTENT_TYPE_MULFORM = "multipart/form-data"
    CONTENT_TYPE_JSON    = "application/json"
)
func DoPostRequest(url string, contentType string, body map[string]interface{}, params map[string]string, headers map[string]string) ([]byte, error) {
    var resultBytes []byte
    var request *http.Request
    var err error
    if contentType == CONTENT_TYPE_FORM || contentType == CONTENT_TYPE_MULFORM {
        formData, err := form.EncodeToString(body)
        if err != nil {
            return resultBytes, err
        }
        request, err = http.NewRequest("POST", url, strings.NewReader(formData))
        if err != nil {
            return resultBytes, err
        }
    } else {
        var bodyJson []byte
        if body != nil {
            var err error
            bodyJson, err = json.Marshal(body)
            if err != nil {
                return resultBytes, err
            }
        }
        request, err = http.NewRequest("POST", url, bytes.NewBuffer(bodyJson))
        if err != nil {
            return resultBytes, err
        }
    }
    request.Header.Set("Content-type", contentType)
    //add params
    q := request.URL.Query()
    if params != nil {
        for key, val := range params {
            q.Add(key, val)
        }
        request.URL.RawQuery = q.Encode()
    }
    // add headers
    if headers != nil {
        for key, val := range headers {
            request.Header.Add(key, val)
        }
    }
    client := &http.Client{}
    resp, err := client.Do(request)
    if err != nil {
        return resultBytes, err
    }
    defer resp.Body.Close()
    resultBytes, err = ioutil.ReadAll(resp.Body)
    if err != nil {
        return resultBytes, err
    }
    return resultBytes, nil
}
service/SdkDownLoad_test.go
New file
@@ -0,0 +1 @@
package service