golang实现http的get和post请求 不使用 ioutilReadAllrespBody
使用 bufio.NewReader(resp.Body) 和 io.Copy() 可以避免使用 ioutil.ReadAll()。
示例代码如下:
package main
import (
"bufio"
"fmt"
"io"
"net/http"
"strings"
)
func main() {
// GET 请求
resp, err := http.Get("https://www.baidu.com")
if err != nil {
fmt.Println("http get error:", err)
return
}
defer resp.Body.Close()
// 读取响应
reader := bufio.NewReader(resp.Body)
for {
line, err := reader.ReadString('\n')
if err != nil && err != io.EOF {
fmt.Println("read response error:", err)
return
}
if err == io.EOF {
break
}
fmt.Println(strings.TrimSpace(line))
}
// POST 请求
data := strings.NewReader("hello world")
resp, err = http.Post("https://httpbin.org/post", "text/plain", data)
if err != nil {
fmt.Println("http post error:", err)
return
}
defer resp.Body.Close()
// 读取响应
reader = bufio.NewReader(resp.Body)
for {
line, err := reader.ReadString('\n')
if err != nil && err != io.EOF {
fmt.Println("read response error:", err)
return
}
if err == io.EOF {
break
}
fmt.Println(strings.TrimSpace(line))
}
}
``
原文地址: https://www.cveoy.top/t/topic/hlQp 著作权归作者所有。请勿转载和采集!