gpt4 book ai didi

http - 使用 Golang 读取时 http.Request.Body 中没有内容

转载 作者:IT王子 更新时间:2023-10-29 01:15:31 24 4
gpt4 key购买 nike

注意:为简单起见,省略了所有错误处理代码。我是在本地处理的,没有报错。

在 Golang 中,我尝试使用下面的代码从 POST 请求中读取 http.Request.Body:

func readBody(req *http.Request) string {
bytes, _ := httputils.DumpRequestOut(req, true)
return string(bytes)
}

它显示了一个非零的 Content-Length,但没有返回内容:

ContentLength=413 with Body length 0

.我试过下面的代码,也不走运:

func readBody(req *http.Request) string {
bytes, _ := ioutil.ReadAll(req.Body)
return string(bytes)
}

它返回一个空字符串。谷歌搜索后,我发现了一个关于这个问题的博客:Golang: Read from an io.ReadWriter without losing its content .我尝试按照模式进行操作,但仍然没有成功:

func readBody(req *http.Request) string {
bodyBytes, _ := ioutil.ReadAll(req.Body)
// Restore the io.ReadCloser to its original state
req.Body = ioutil.NopCloser(bytes.NewBuffer(bodyBytes))
// Use the content
return string(bodyBytes)
}

有什么建议吗?提前致谢:)

最佳答案

如果请求不包含适当的“Content-Type” header ,您在尝试阅读时可能会看到长度为 0 的正文。

关于http - 使用 Golang 读取时 http.Request.Body 中没有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32775539/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com