文件结构:

在这里插入图片描述

http_client.go代码如下:

package client

import (
	"bytes"
	"fmt"
	"io"
	"io/ioutil"
	"net/http"
	"net/http/cookiejar"
	"net/url"
	"strings"
	"time"
)


// HTTPClient http client
type HTTPClient struct {
	*http.Client
	UserAgent string
}

var (
	UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36"
)


func NewHTTPClient() *HTTPClient {

	j,_ := cookiejar.New(nil)
	h := &HTTPClient{
		Client: &http.Client{
			Timeout: 30 * time.Second,
			Jar:j,
		},
		UserAgent: UserAgent,
	}

	return h
}

// SetUserAgent 设置 UserAgent 浏览器标识
func (h *HTTPClient) SetUserAgent(ua string) {
	h.UserAgent = ua
}

// SetTimeout 设置 http 请求超时时间, 默认30s
func (h *HTTPClient) SetTimeout(t time.Duration) {
	h.Client.Timeout = t
}


func(h *HTTPClient)Fetch(webUrl string,method string,headers map[string]string,data interface{})(respBody []byte,err error){

	var req *http.Request
	var obody io.Reader
	if data != nil {
		switch value := data.(type) {
		case io.Reader:
			obody = value
		case map[string]string:
			query := url.Values{}
			for k := range value {
				query.Set(k, value[k])
			}
			obody = strings.NewReader(query.Encode())
		case map[string]interface{}:
			query := url.Values{}
			for k := range value {
				query.Set(k, fmt.Sprint(value[k]))
			}
			obody = strings.NewReader(query.Encode())
		case map[interface{}]interface{}:
			query := url.Values{}
			for k := range value {
				query.Set(fmt.Sprint(k), fmt.Sprint(value[k]))
			}
			obody = strings.NewReader(query.Encode())
		case string:
			obody = strings.NewReader(value)
		case []byte:
			obody = bytes.NewReader(value[:])
		default:
			return nil, fmt.Errorf("requester.Req: unknown post type: %s", value)
		}
	}

	req, err = http.NewRequest(method, webUrl, obody)
	if err!=nil{
		return
	}
	if headers!=nil{
		for k,v:=range headers{
			req.Header.Set(k,v)
		}
	}

	if method==http.MethodPost{
		req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
	}
	req.Header.Set("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36")

	resp,err:=h.Client.Do(req)
	if err!=nil{
		return
	}
	defer resp.Body.Close()
	//fmt.Println("res Cookies is :",resp.Cookies())
	//u,_:= url.Parse(webUrl)
	//h.Client.Jar.SetCookies(u,resp.Cookies())
	//fmt.Println("cookie jar is:",h.Client.Jar.Cookies(u))
	respBody,err=ioutil.ReadAll(resp.Body)
	return
}

main.go代码如下:

找到输出的路径并用百度云APP扫码,确认登录就行,二维码路径在临时目录中:在这里插入图片描述