你如何流请求Golang

时间:2016-06-08 21:35:30

标签: go get streaming

我已经安静了一点搜索,我还没有真正找到这个问题的任何答案。你如何用Go下载一个分块响应。我对python比较熟悉。在python中我会做这样的事情

    with closing(requests.get('some_url' ,stream=True)) as res:
      for chunk in res.iter_content(chunk_size=512):
        #do something with chunk

我尝试了几种不同的方法来实现这个效果。这是我最近的尝试。

func DownloadLogs(start int, end int) {
    url := "removed for security"
    client := &http.Client{}
    req, _ := http.NewRequest("GET", url, nil)
    req.Header.Set("Content-Type", "application/json")
    req.Header.Set("X-Auth-Key", "removed for security")
    req.Header.Set("X-Auth-Email", "removed for security")

    res, err := client.Do(req)
    if err != nil {
        panic(err.Error())
    }
    defer res.Body.Close()

    // output, err := os.Create("test.txt")
    //   if err != nil {
    //     fmt.Println("Error while creating", "test", "-", err)
    //     return
    //   }
    //   defer output.Close()

    reader := bufio.NewReader(res.Body)
    for {
        line, err := reader.ReadBytes('\n')
        if err != nil {
            return
        }
        println(string(line))
    }
}

我正在使用Go的http库,但我也尝试过去的小睡库。

0 个答案:

没有答案