|
|
- package wechat
-
- import (
- "bytes"
- "encoding/xml"
- "io/ioutil"
- "net/http"
- "strings"
- )
-
- /**
- * 自定义HTTP请求
- */
- func SendHttp(method, url string, param map[string]string, header ...map[string]string) ([]byte, error) {
- httpClient := &http.Client{}
-
- paramStr := ""
- if len(param) > 0 {
- for key, value := range param {
- paramStr += key + "=" + value + "&"
- }
-
- paramStr = paramStr[0 : len(paramStr)-1]
- }
-
- req, err := http.NewRequest(method, url, strings.NewReader(paramStr))
- if err != nil {
- return []byte(""), err
- }
-
- req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
-
- if len(header) > 0 {
- for _, item := range header {
- for k, v := range item {
- req.Header.Set(k, v)
- }
- }
- }
-
- resp, err := httpClient.Do(req)
- if err != nil {
- return []byte(""), err
- }
-
- defer resp.Body.Close()
- body, err := ioutil.ReadAll(resp.Body)
- if err != nil {
- return []byte(""), err
- }
-
- return body, nil
- }
-
- /**
- * send xml
- */
- func SendXml(method, url string, requestxml interface{}, header ...map[string]string) ([]byte, error) {
-
- bytexml, err := xml.Marshal(&requestxml)
- if err != nil {
- return []byte(""), err
- }
-
- httpClient := &http.Client{}
-
- req, err := http.NewRequest(method, url, bytes.NewBuffer(bytexml))
- if err != nil {
- return []byte(""), err
- }
-
- req.Header.Add("Content-Type", "application/xml; charset=utf-8")
-
- if len(header) > 0 {
- for _, item := range header {
- for k, v := range item {
- req.Header.Add(k, v)
- }
- }
- }
- resp, err := httpClient.Do(req)
- if err != nil {
- return []byte(""), err
- }
-
- defer resp.Body.Close()
- body, err := ioutil.ReadAll(resp.Body)
- if err != nil {
- return []byte(""), err
- }
-
- return body, nil
- }
-
- /**
- * post 请求
- */
- func PostJson(url string, param []byte, header ...map[string]string) ([]byte, error) {
- httpClient := &http.Client{}
-
- req, err := http.NewRequest("POST", url, bytes.NewBuffer(param))
- if err != nil {
- return []byte(""), err
- }
-
- req.Header.Set("Content-Type", "application/json")
-
- if len(header) > 0 {
- for _, item := range header {
- for k, v := range item {
- req.Header[k] = []string{v}
- }
- }
- }
- resp, err := httpClient.Do(req)
- if err != nil {
- return []byte(""), err
- }
-
- defer resp.Body.Close()
- body, err := ioutil.ReadAll(resp.Body)
- if err != nil {
- return []byte(""), err
- }
-
- return body, nil
- }
|