AA := "hello word"
url := " https://www.xxxx.com?aa=" + AA
res,_ := httpGet(url)
这样请求会报错,因为url里有空格,我试了手动将空格转义,但这样麻烦,看了url包,好像都是url解析的方法,golang有没有将url转义的方法?
AA := "hello word"
url := " https://www.xxxx.com?aa=" + AA
res,_ := httpGet(url)
这样请求会报错,因为url里有空格,我试了手动将空格转义,但这样麻烦,看了url包,好像都是url解析的方法,golang有没有将url转义的方法?
https://github.com/qiukeren/g...
你可以看这里,有一段实例代码,用途是使用map做参数进行请求,对参数和超时也进行了处理,还资瓷了https。
import (
"crypto/tls"
"io/ioutil"
"net/http"
"net/url"
"time"
"strings"
)
//Get is a common http client for httpGet operations and hide UA as GoogleBot.
func Get(urls string) ([]byte, error) {
req, err := http.NewRequest("GET", urls, nil)
if err != nil {
return nil, err
}
req.Header.Set("User-Agent", "Googlebot/2.1 (+http://www.google.com/bot.html)")
client := getClient()
resp, err := client.Do(req)
if err != nil {
return nil, err
}
defer resp.Body.Close()
tempData, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, err
}
return tempData, nil
}
func getClient() *http.Client {
tr := &http.Transport{
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
DisableCompression: true,
DisableKeepAlives: true,
}
client := &http.Client{
Transport: tr,
Timeout: 15 * time.Second,
}
return client
}
func RequestWithHeader(
method string,
url1 string,
timeout int,
header map[string]string,
params map[string]string,
) ([]byte, error) {
client := getClient()
paramsA := ""
if method == "POST" {
values := url.Values{}
for k, v := range params {
values.Add(k, v)
}
paramsA = values.Encode()
}
req, _ := http.NewRequest(method, url1, strings.NewReader(paramsA))
for k, v := range header {
req.Header.Set(k, v)
}
if method == "POST" {
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
}
if method == "GET" {
values := req.URL.Query()
for k, v := range params {
values.Add(k, v)
}
req.URL.RawQuery = values.Encode()
}
getResp, err := client.Do(req)
if err != nil {
return nil, err
}
defer getResp.Body.Close()
body, err := ioutil.ReadAll(getResp.Body)
if err != nil {
return nil, err
}
return body, nil
}
7 回答5.3k 阅读
6 回答6.9k 阅读✓ 已解决
4 回答2.3k 阅读
1 回答2k 阅读✓ 已解决
1 回答3.4k 阅读
2 回答2.2k 阅读
1 回答2.1k 阅读
类似这样子,
感谢@Tranch老师的帮助!