go - http.Post 无法正常工作?

标签 go

我正在尝试使用 cli 工具中的这段 go 代码访问文件上传 API。帖子似乎甚至没有到达服务器,但这段代码运行没有错误,结果消息是一个空字符串。

curl 有效。
其他帖子有效。

有什么建议吗?

file, err := os.Open(c.Args().Get(0))

if err != nil {
    exitErr(err)
}

defer file.Close()

fmt.Print("About to upload file ", c.Args().Get(0), "\n");
res, err := http.Post(fmt.Sprintf("%s/upload", config.Host), "application/octet-stream", file)
if err != nil {
    exitErr(err)
}

defer res.Body.Close()

message, err := ioutil.ReadAll(res.Body)

if err != nil {
    exitErr(err)
}

fmt.Print("Uploaded result: ", string(message), "\n")

最佳答案

多谢指点。我从没想过要检查状态码。我得到的是 307(临时重定向),而不是 200。我的解决方案是在“位置”之后循环,直到达到最大重定向计数。我读过 go 中的默认 http 客户端代码遵循重定向,所以我有点惊讶我必须这样做。 go 和 http 编程对我来说都是新手,非常感谢您的帮助!

关于go - http.Post 无法正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57275285/

相关文章:

Go 函数创建泛型类型的新指针或新值

go - 函数类型转换

go - base64解码然后json解码: base64. NewDecoder EOF错误和json无效字符错误

go - 如何导入本地包?

go - 如何在 Proto3 中为 HTTP 响应创建一个可空字段?

go - 如何编译不符合 `go get`模式的go代码

go - 为什么我可以省略函数的参数名称?

go - 参数是接口(interface)列表{}

arrays - Go:数组超出索引 panic 错误

json - 忽略 struct 中的对象为 nil,而不是当它是空数组时