新注册的用户请输入邮箱并保存,随后登录邮箱激活账号。后续可直接使用邮箱登录!

httpUtil.go 1.57 KB
package logic

import (
	"bytes"
	"crypto/tls"
	"errors"
	"github.com/zeromicro/go-zero/core/logx"
	"io"
	"net/http"
	"net/url"
	"strings"
)

func DidServerReq(targetUrl, method, proxy string, param []byte) ([]byte, error) {
	// 创建一个 http.Client 对象
	client := &http.Client{}
	// 创建一个 http.Transport 对象
	tr := &http.Transport{}
	// 如果目标 URL 以 https:// 开头,则不验证服务器证书
	if strings.HasPrefix(targetUrl, "https://") {
		tr.TLSClientConfig = &tls.Config{
			// nolint:gosec // need insecure TLS option for testing and development
			InsecureSkipVerify: true,
		}
	}
	// 如果提供了代理地址,则设置代理
	if proxy != "" {
		proxyURL, err := url.Parse(proxy)
		if err != nil {
			return nil, err
		}
		tr.Proxy = http.ProxyURL(proxyURL)
	}

	// 将 transport 设置到 http.Client 中
	client.Transport = tr
	// 创建一个新的 HTTP 请求
	req, err := http.NewRequest(method, targetUrl, bytes.NewBuffer(param))

	if err != nil {
		return nil, err
	}
	req.Header.Add("Content-Type", "application/json")

	res, err := client.Do(req)
	if err != nil {
		return nil, err
	}
	defer res.Body.Close()

	if res.StatusCode == http.StatusOK {
		data, err := io.ReadAll(res.Body)
		logx.Debugf("did server response [targetUrl:%s] [resp:%s]", targetUrl, data)
		return data, err
	}

	if res.Body != nil {
		bz, ioErr := io.ReadAll(res.Body)
		logx.Error("did server request failed", string(bz), ioErr)
	}
	logx.Error("did server request failed", res.StatusCode, res.Status)
	return nil, errors.New("did server request failed,status: " + res.Status)
}