net

cooolr 于 2021-06-05 发布
package main

import "net/http"
import "io/ioutil"

func Get(url string, headers map[string]string) (string, error) {
	client := &http.Client{}
	request,_ := http.NewRequest("GET", url, nil)
	for key,value := range headers {
		if key == "Host" {
			request.Host = value
		} else {
			request.Header.Add(key, value)
		}
	}
	response,err := client.Do(request)
	if err != nil {
		return "",err
	}
	body,err := ioutil.ReadAll(response.Body)
	if err != nil {
		return "",err
	}
	return string(body),nil
}

gzip内部会重置 c.Writer() 导致header失效,请勿添加

haeder里添加Host会无效,需要req.Host="xxx.xxx"

client := &http.Client{}
req,_ := http.NewRequest("GET", "http://example.org", nil)
// req.Header.Add("Accept-Encoding", "gzip")
req.Header.Add("Host", "ib-lq.snssdk.com")
req.Header.Add("Connection", "Keep-Alive")
req.Header.Add("User-Agent", "okhttp/3.10.0.1")
req.Host = "ib-lq.snssdk.com"

resp,err := client.Do(req)
...

url编码解码

import "net/url"

//编码
url.QueryEscape("http://baidu.com")

//解码
url.QueryUnescape("http://baidu.com")