gpt4 book ai didi

go - 防止 golang http.NewRequest 向 POST 正文添加大括号

转载 作者:IT王子 更新时间:2023-10-29 00:57:59 27 4
gpt4 key购买 nike

这一定很简单,但我不明白为什么在使用 go 发出 HTTP 请求时,请求的主体被包裹在一组额外的大括号中:

package main

import (
"bytes"
"fmt"
"net/http"
)

func main() {
jsonStr := []byte(`{"some":"test","json":"data"}`)
req, _ := http.NewRequest("POST", "http://test.com", bytes.NewBuffer(jsonStr))
fmt.Print(req.Body)
}

这导致:

{{"some":"test","json":"data"}}

在我的实际代码中,我使用 json.Marshal 和一个结构来生成字节缓冲区,但得到的结果相同。结果是 API 拒绝请求(如预期的那样)。

如何防止添加额外的大括号?

最佳答案

正文的打印表示与阅读器的内容不同。 http.NewRequest 函数不会向 POST 正文添加大括号。

这是发生了什么:

正文是一个ioutil.nopCloser将 Reader 字段设置为 *bytes.Buffer

fmt.Print 函数将 ioutil.nopCloser 结构打印为 { + fields + }。这是打印输出中额外的一组大括号。 fmt.Print 函数通过调用 *bytes.Buffer.String 方法打印 Reader 字段。 String 方法将内容作为字符串返回。

正文是通过读取发送的,而不是通过打印发送的。

关于go - 防止 golang http.NewRequest 向 POST 正文添加大括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45133721/

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