mirror of
https://github.com/silenceper/wechat.git
synced 2026-02-09 15:12:26 +08:00
增加小程序-云开发http api
This commit is contained in:
@@ -3,6 +3,7 @@ package util
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"reflect"
|
||||
)
|
||||
|
||||
// CommonError 微信返回的通用错误json
|
||||
@@ -23,3 +24,28 @@ func DecodeWithCommonError(response []byte, apiName string) (err error) {
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// DecodeWithError 将返回值按照解析
|
||||
func DecodeWithError(response []byte, obj interface{}, apiName string) error {
|
||||
err := json.Unmarshal(response, obj)
|
||||
if err != nil {
|
||||
return fmt.Errorf("json Unmarshal Error, err=%v", err)
|
||||
}
|
||||
responseObj := reflect.ValueOf(obj)
|
||||
if !responseObj.IsValid() {
|
||||
return fmt.Errorf("obj is invalid")
|
||||
}
|
||||
commonError := responseObj.Elem().FieldByName("CommonError")
|
||||
if !commonError.IsValid() || commonError.Kind() != reflect.Struct {
|
||||
return fmt.Errorf("commonError is invalid or not struct")
|
||||
}
|
||||
errCode := commonError.FieldByName("ErrCode")
|
||||
errMsg := commonError.FieldByName("ErrMsg")
|
||||
if !errCode.IsValid() || !errMsg.IsValid() {
|
||||
return fmt.Errorf("errcode or errmsg is invalid")
|
||||
}
|
||||
if errCode.Int() != 0 {
|
||||
return fmt.Errorf("%s Error , errcode=%d , errmsg=%s", apiName, errCode.Int(), errMsg.String())
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
20
util/http.go
20
util/http.go
@@ -7,13 +7,14 @@ import (
|
||||
"encoding/pem"
|
||||
"encoding/xml"
|
||||
"fmt"
|
||||
"golang.org/x/crypto/pkcs12"
|
||||
"io"
|
||||
"io/ioutil"
|
||||
"log"
|
||||
"mime/multipart"
|
||||
"net/http"
|
||||
"os"
|
||||
|
||||
"golang.org/x/crypto/pkcs12"
|
||||
)
|
||||
|
||||
//HTTPGet get 请求
|
||||
@@ -30,17 +31,30 @@ func HTTPGet(uri string) ([]byte, error) {
|
||||
return ioutil.ReadAll(response.Body)
|
||||
}
|
||||
|
||||
//HTTPPost post 请求
|
||||
func HTTPPost(uri string, data string) ([]byte, error) {
|
||||
body := bytes.NewBuffer([]byte(data))
|
||||
response, err := http.Post(uri, "", body)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
defer response.Body.Close()
|
||||
if response.StatusCode != http.StatusOK {
|
||||
return nil, fmt.Errorf("http get error : uri=%v , statusCode=%v", uri, response.StatusCode)
|
||||
}
|
||||
return ioutil.ReadAll(response.Body)
|
||||
}
|
||||
|
||||
//PostJSON post json 数据请求
|
||||
func PostJSON(uri string, obj interface{}) ([]byte, error) {
|
||||
jsonData, err := json.Marshal(obj)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
jsonData = bytes.Replace(jsonData, []byte("\\u003c"), []byte("<"), -1)
|
||||
jsonData = bytes.Replace(jsonData, []byte("\\u003e"), []byte(">"), -1)
|
||||
jsonData = bytes.Replace(jsonData, []byte("\\u0026"), []byte("&"), -1)
|
||||
|
||||
body := bytes.NewBuffer(jsonData)
|
||||
response, err := http.Post(uri, "application/json;charset=utf-8", body)
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user