response, err := client.Do(reqest)
defer response.Body.Close()
当我client.Do(reqest) 完了以后,所有数据是已经在内存里面了吗?
ioutil.ReadAll(response.Body) 还是这个才是从服务网GET数据下来?
如果我想控制下载的速度,是不是就是在read这一步 限制下读取速度?(前提是read的时候,是从服务器上拉数据...,代码在下面..)
buf := make([]byte, 1024)
for {
n, err := r.Body.Read(buf)
if err != nil {
break
}
}
更多评论
嗯,是这样的。网络 IO,读的时候才会获取数据。
相关跟代码:[transfer.go?s=7038:7050#L290](http://docs.studygolang.com/src/pkg/net/http/transfer.go?s=7038:7050#L290)
#1
HTTP 请求一旦发出,服务端不管你读不读,都会响应数据,也就是数据会传输过来,不过,这时候数据是在操作系统实现的协议栈的buffer中,也就是操作系统保存了。
从 resp.Body 中读,只是从协议数据中把数据读到当前程序中。不会影响网路数据的传输。
#2