From ffeb4805bed04e94efa850a04bd99d0408e4fd56 Mon Sep 17 00:00:00 2001 From: liuxiaolong <liuxiaolong@aiotlink.com> Date: 星期五, 05 六月 2020 18:25:40 +0800 Subject: [PATCH] add requtil --- service/SdkDownLoad_test.go | 1 extend/util/requtil.go | 73 ++++++++++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+), 0 deletions(-) diff --git a/extend/util/requtil.go b/extend/util/requtil.go new file mode 100644 index 0000000..203d21f --- /dev/null +++ b/extend/util/requtil.go @@ -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 +} \ No newline at end of file diff --git a/service/SdkDownLoad_test.go b/service/SdkDownLoad_test.go new file mode 100644 index 0000000..6d43c33 --- /dev/null +++ b/service/SdkDownLoad_test.go @@ -0,0 +1 @@ +package service -- Gitblit v1.8.0