Go使用net/http库发送GET请求
简单的GET请求
func Test1() {
// 发送请求
resp, err := http.Get("http://localhost:8080/test")
if err != nil {
log.Fatal(err)
}
// 读取返回结果
body, _ := ioutil.ReadAll(resp.Body)
var data interface{}
// 序列化返回结果
json.Unmarshal(body, &data)
fmt.Println(data)
}
带参数的GET请求
func Test2() {
req, err := http.NewRequest("GET", "http://localhost:8080/test", nil)
if err != nil {
log.Fatal(err)
}
// 设置参数
params := req.URL.Query()
params.Add("action", "get")
params.Add("page", "2")
req.URL.RawQuery = params.Encode()
resp, _ := http.DefaultClient.Do(req)
body, _ := ioutil.ReadAll(resp.Body)
var data interface{}
json.Unmarshal(body, &data)
fmt.Println(data)
}
设置超时时间的GET请求
func Test3() {
req, err := http.NewRequest("GET", "http://localhost:8080/test", nil)
if err != nil {
log.Fatal(err)
}
// 设置 timeout 为5s
var t int64 = 5
ctx, _ := context.WithTimeout(context.Background(), time.Duration(t) * time.Second)
// 设置参数
params := req.URL.Query()
params.Add("action", "get")
params.Add("page", "2")
req.URL.RawQuery = params.Encode()
resp, _ := http.DefaultClient.Do(req.WithContext(ctx))
body, _ := ioutil.ReadAll(resp.Body)
var data interface{}
json.Unmarshal(body, &data)
fmt.Println(data)
}
本作品采用《CC 协议》,转载必须注明作者和本文链接