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