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 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!