gpt4 book ai didi

json - 使用 http.Post 将 json 数据发布到远程服务器

转载 作者:IT王子 更新时间:2023-10-29 02:06:04 26 4
gpt4 key购买 nike

我被一个看似非常简单的问题难住了。

我从客户端接收到一个 json 对象。它看起来像这样:

{
"user": "test@example.com"
}

我需要将其作为 POST 请求简单地传递给 api 的另一部分。这是我到目前为止所得到的:

//Decode incomming json
decoder := json.NewDecoder(r.Body)
var user UserInformation
err := decoder.Decode(&user)

if err != nil {
log.Println(err)
}

jsonUser, _ := json.Marshal(user)

log.Println(string(jsonUser[:])) //Correct output
buffer := bytes.NewBuffer(jsonUser)
log.Println(string(buffer.Bytes()[:])) //Also correct


resp, err := http.Post("http://example.com/api/has_publisher", "application/json", buffer)
if err != nil {
log.Println(err)
}

因为我无法在实时系统上测试这个程序,所以我用 wireshark 验证了生成的发布请求,结果发现内容丢失以及 Content-Length 为 0。出于某种原因,http.Post 没有读取缓冲区。

我在这里遗漏了什么吗?如果有人能指出正确的方向,我将不胜感激。

谢谢!

最佳答案

不应该是根本原因,而是替换

缓冲区 := bytes.NewBuffer(jsonUser)

buffer := bytes.NewReader(jsonUser)

您的测试设置更有可能是根本原因。我假设您指向一个不存在的端点。这将导致在发送实际 HTTP POST 之前失败(TCP SYN 失败)。

检查是否可以使用 mockable.io作为模拟后端的替代方法。

关于json - 使用 http.Post 将 json 数据发布到远程服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23079087/

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