52 lines
961 B
Go
52 lines
961 B
Go
package httplib
|
||
|
||
import (
|
||
"bytes"
|
||
"io/ioutil"
|
||
"net/http"
|
||
"time"
|
||
|
||
jsoniter "github.com/json-iterator/go"
|
||
)
|
||
|
||
// PostJSON 方法废弃,后面都使用beego的那些方法,beego的httplib做了改动,会复用transport
|
||
func PostJSON(url string, timeout time.Duration, v interface{}, headers map[string]string) (response []byte, code int, err error) {
|
||
var bs []byte
|
||
var json = jsoniter.ConfigCompatibleWithStandardLibrary
|
||
|
||
bs, err = json.Marshal(v)
|
||
if err != nil {
|
||
return
|
||
}
|
||
|
||
bf := bytes.NewBuffer(bs)
|
||
|
||
client := http.Client{
|
||
Timeout: timeout,
|
||
}
|
||
|
||
req, err := http.NewRequest("POST", url, bf)
|
||
req.Header.Set("Content-Type", "application/json")
|
||
|
||
if headers != nil {
|
||
for k, v := range headers {
|
||
req.Header.Add(k, v)
|
||
}
|
||
}
|
||
|
||
var resp *http.Response
|
||
resp, err = client.Do(req)
|
||
if err != nil {
|
||
return
|
||
}
|
||
|
||
code = resp.StatusCode
|
||
|
||
if resp.Body != nil {
|
||
defer resp.Body.Close()
|
||
response, err = ioutil.ReadAll(resp.Body)
|
||
}
|
||
|
||
return
|
||
}
|