使用 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))
    }
}
``
golang实现http的get和post请求 不使用 ioutilReadAllrespBody

原文地址: https://www.cveoy.top/t/topic/hlQp 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录