Golang:同时功能调用http post请求

时间:2016-07-20 13:27:41

标签: http go concurrency simultaneous

我需要同时调用多个URL。我的函数同时被调用(以毫秒为单位),但是当我向代码添加一个Http post请求时,它会被一个接一个地调用。以下是代码:

Check(url1)
Check(url2)

func Check(xurl string) {

    nowstartx    := time.Now()
    startnanos   := nowstartx.UnixNano()
    nowstart := startnanos / 1000000
    fmt.Println(nowstart)

    json = {"name" : "test"}
    req, err := http.NewRequest("POST", xurl, bytes.NewBuffer(json))
    req.Header.Set("X-Custom-Header", "myvalue")
    req.Header.Set("Content-Type", "application/json")
    client := &http.Client{}
    resp, err := client.Do(req)

    if err != nil {
        panic(err)

    } else {
        defer resp.Body.Close()
        body, _ = ioutil.ReadAll(resp.Body)
    }

}

感谢帮助,我需要在运行程序时获得相同的时间(以毫秒为单位)。

1 个答案:

答案 0 :(得分:2)

这是通过使用Goroutines

实现的
go Check(url1)
go Check(url2)

func Check(xurl string) {

    nowstartx    := time.Now()
    startnanos   := nowstartx.UnixNano()
    nowstart := startnanos / 1000000
    fmt.Println(nowstart)

    json = {"name" : "test"}
    req, err := http.NewRequest("POST", xurl, bytes.NewBuffer(json))
    req.Header.Set("X-Custom-Header", "myvalue")
    req.Header.Set("Content-Type", "application/json")
    client := &http.Client{}
    resp, err := client.Do(req)

    if err != nil {
        panic(err)

    } else {
        defer resp.Body.Close()
        body, _ = ioutil.ReadAll(resp.Body)
    }

}