53 lines
1.3 KiB
Go
53 lines
1.3 KiB
Go
package main
|
||
|
||
import (
|
||
"fmt"
|
||
"io"
|
||
"net/http"
|
||
"net/url"
|
||
)
|
||
|
||
// 全局公用链接,请求频率比较频繁
|
||
//var (
|
||
// client = http.Client{
|
||
// Transport: &http.Transport{DisableKeepAlives: false},
|
||
// }
|
||
//)
|
||
|
||
func main() {
|
||
apiUrl := "http://127.0.0.1:9090/query"
|
||
apiParseUrl, err := url.Parse(apiUrl) //url不带参数传入,返回一个结构体
|
||
if err != nil {
|
||
fmt.Println("url parse err:", err)
|
||
}
|
||
data := url.Values{}
|
||
data.Set("name", "王奥")
|
||
data.Set("age", "18") //set url中带参的数据
|
||
paramStr := data.Encode() //编码
|
||
apiParseUrl.RawQuery = paramStr //赋值到url的结构体中,组成完整的url编码对象
|
||
//自定义client 禁用keepalive 适用于请求频率不频繁,每次请求生成一个短链接,之后释放
|
||
tr := http.Transport{DisableKeepAlives: true} //短链接
|
||
client := http.Client{
|
||
Transport: &tr,
|
||
}
|
||
//生成请求对象
|
||
req, err := http.NewRequest("GET", apiParseUrl.String(), nil)
|
||
if err != nil {
|
||
fmt.Println("start new req err:", err)
|
||
}
|
||
//如果使用默认client:
|
||
//http.DefaultClient.Do(req)
|
||
//发送自定义请求
|
||
resp, err := client.Do(req)
|
||
if err != nil {
|
||
return
|
||
}
|
||
defer resp.Body.Close() //关闭请求体
|
||
//读取返回体
|
||
body, err := io.ReadAll(resp.Body)
|
||
if err != nil {
|
||
fmt.Println("read resp body err:", err)
|
||
}
|
||
fmt.Println("resp body:", string(body))
|
||
}
|