正常情况下,下面这段代码可以获取到响应结构体的字节流
,反序列化一下就能得到响应结构体,当 url 是一个互联网对象资源时,即访问该 url 是用来下载资源时,下面这段代码获取到的就是被资源的二进制流
func HttpGet(url string) ([]byte, error) {
resp, err := http.Get(url)
if err != nil {
return nil, err
}
if resp == nil {
return nil, fmt.Errorf("resp is nil")
}
defer resp.Body.Close()
if resp.StatusCode != http.StatusOK {
return nil, fmt.Errorf("resp status is %s", resp.Status)
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, err
}
return body, nil
}
获取到文件字节流后,可以保存成本地文件,也可以做其他动作,比如把二进制流继续传递到其他地方。下面是把二进制流保存成本地文件的实现
row, err := HttpGet(url)
reader := bufio.NewReaderSize(raw, 1024*32);
file, err := os.Create(filename)
if err != nil {
panic(err)
}
writer := bufio.NewWriter(file)