代码拉取完成,页面将自动刷新
package tools
import (
"errors"
"io"
"net/http"
"net/url"
"reflect"
"time"
)
var (
httpClient = &http.Client{Timeout: 5 * time.Second}
)
func DoHttp(url, method string, headers map[string]string, postParams io.Reader, getParams url.Values) (res []byte, err error) {
var (
req *http.Request
)
if method == "GET" {
if postParams != nil {
err = errors.New("GET传参异常! 请检查")
return
}
if getParams != nil {
url += "?" + getParams.Encode()
}
req, err = http.NewRequest(method, url, nil)
} else {
if getParams != nil {
err = errors.New("非GET传参异常! 请检查")
return
}
req, err = http.NewRequest(method, url, postParams)
}
if err != nil {
return
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:133.0) Gecko/20100101 Firefox/133.0")
if len(headers) > 0 {
for key, value := range headers {
req.Header.Set(key, value)
}
}
resp, err := httpClient.Do(req)
if err != nil {
return
}
defer resp.Body.Close()
res, err = io.ReadAll(resp.Body)
return
}
func StructToMap(obj any) map[string]any {
result := make(map[string]any)
v := reflect.ValueOf(obj)
if v.Kind() == reflect.Ptr {
v = v.Elem()
}
if v.Kind() != reflect.Struct {
return nil
}
t := v.Type()
for i := 0; i < v.NumField(); i++ {
field := v.Field(i)
var val any
if field.Kind() == reflect.Ptr {
if !field.IsNil() {
val = field.Elem().Interface()
}
} else {
val = field.Interface()
}
if val != nil {
result[t.Field(i).Tag.Get("json")] = val
}
}
return result
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。