mirror of
https://github.com/silenceper/wechat.git
synced 2026-02-12 08:42:28 +08:00
支持在请求前修改各api的地址 (#736)
* 增加URI修改接口,以支持正向代理 * Update http.go * Update http.go
This commit is contained in:
28
util/http.go
28
util/http.go
@@ -17,6 +17,16 @@ import (
|
|||||||
"golang.org/x/crypto/pkcs12"
|
"golang.org/x/crypto/pkcs12"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// URIModifier URI修改器
|
||||||
|
type URIModifier func(uri string) string
|
||||||
|
|
||||||
|
var uriModifier URIModifier
|
||||||
|
|
||||||
|
// SetURIModifier 设置URI修改器
|
||||||
|
func SetURIModifier(fn URIModifier) {
|
||||||
|
uriModifier = fn
|
||||||
|
}
|
||||||
|
|
||||||
// HTTPGet get 请求
|
// HTTPGet get 请求
|
||||||
func HTTPGet(uri string) ([]byte, error) {
|
func HTTPGet(uri string) ([]byte, error) {
|
||||||
return HTTPGetContext(context.Background(), uri)
|
return HTTPGetContext(context.Background(), uri)
|
||||||
@@ -24,6 +34,9 @@ func HTTPGet(uri string) ([]byte, error) {
|
|||||||
|
|
||||||
// HTTPGetContext get 请求
|
// HTTPGetContext get 请求
|
||||||
func HTTPGetContext(ctx context.Context, uri string) ([]byte, error) {
|
func HTTPGetContext(ctx context.Context, uri string) ([]byte, error) {
|
||||||
|
if uriModifier != nil {
|
||||||
|
uri = uriModifier(uri)
|
||||||
|
}
|
||||||
request, err := http.NewRequestWithContext(ctx, http.MethodGet, uri, nil)
|
request, err := http.NewRequestWithContext(ctx, http.MethodGet, uri, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@@ -47,6 +60,9 @@ func HTTPPost(uri string, data string) ([]byte, error) {
|
|||||||
|
|
||||||
// HTTPPostContext post 请求
|
// HTTPPostContext post 请求
|
||||||
func HTTPPostContext(ctx context.Context, uri string, data []byte, header map[string]string) ([]byte, error) {
|
func HTTPPostContext(ctx context.Context, uri string, data []byte, header map[string]string) ([]byte, error) {
|
||||||
|
if uriModifier != nil {
|
||||||
|
uri = uriModifier(uri)
|
||||||
|
}
|
||||||
body := bytes.NewBuffer(data)
|
body := bytes.NewBuffer(data)
|
||||||
request, err := http.NewRequestWithContext(ctx, http.MethodPost, uri, body)
|
request, err := http.NewRequestWithContext(ctx, http.MethodPost, uri, body)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -71,6 +87,9 @@ func HTTPPostContext(ctx context.Context, uri string, data []byte, header map[st
|
|||||||
|
|
||||||
// PostJSONContext post json 数据请求
|
// PostJSONContext post json 数据请求
|
||||||
func PostJSONContext(ctx context.Context, uri string, obj interface{}) ([]byte, error) {
|
func PostJSONContext(ctx context.Context, uri string, obj interface{}) ([]byte, error) {
|
||||||
|
if uriModifier != nil {
|
||||||
|
uri = uriModifier(uri)
|
||||||
|
}
|
||||||
jsonBuf := new(bytes.Buffer)
|
jsonBuf := new(bytes.Buffer)
|
||||||
enc := json.NewEncoder(jsonBuf)
|
enc := json.NewEncoder(jsonBuf)
|
||||||
enc.SetEscapeHTML(false)
|
enc.SetEscapeHTML(false)
|
||||||
@@ -146,6 +165,9 @@ type MultipartFormField struct {
|
|||||||
|
|
||||||
// PostMultipartForm 上传文件或其他多个字段
|
// PostMultipartForm 上传文件或其他多个字段
|
||||||
func PostMultipartForm(fields []MultipartFormField, uri string) (respBody []byte, err error) {
|
func PostMultipartForm(fields []MultipartFormField, uri string) (respBody []byte, err error) {
|
||||||
|
if uriModifier != nil {
|
||||||
|
uri = uriModifier(uri)
|
||||||
|
}
|
||||||
bodyBuf := &bytes.Buffer{}
|
bodyBuf := &bytes.Buffer{}
|
||||||
bodyWriter := multipart.NewWriter(bodyBuf)
|
bodyWriter := multipart.NewWriter(bodyBuf)
|
||||||
|
|
||||||
@@ -198,6 +220,9 @@ func PostMultipartForm(fields []MultipartFormField, uri string) (respBody []byte
|
|||||||
|
|
||||||
// PostXML perform a HTTP/POST request with XML body
|
// PostXML perform a HTTP/POST request with XML body
|
||||||
func PostXML(uri string, obj interface{}) ([]byte, error) {
|
func PostXML(uri string, obj interface{}) ([]byte, error) {
|
||||||
|
if uriModifier != nil {
|
||||||
|
uri = uriModifier(uri)
|
||||||
|
}
|
||||||
xmlData, err := xml.Marshal(obj)
|
xmlData, err := xml.Marshal(obj)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@@ -259,6 +284,9 @@ func pkcs12ToPem(p12 []byte, password string) tls.Certificate {
|
|||||||
|
|
||||||
// PostXMLWithTLS perform a HTTP/POST request with XML body and TLS
|
// PostXMLWithTLS perform a HTTP/POST request with XML body and TLS
|
||||||
func PostXMLWithTLS(uri string, obj interface{}, ca, key string) ([]byte, error) {
|
func PostXMLWithTLS(uri string, obj interface{}, ca, key string) ([]byte, error) {
|
||||||
|
if uriModifier != nil {
|
||||||
|
uri = uriModifier(uri)
|
||||||
|
}
|
||||||
xmlData, err := xml.Marshal(obj)
|
xmlData, err := xml.Marshal(obj)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|||||||
Reference in New Issue
Block a user