gpt4 book ai didi

go - http.Post 数据二进制,golang 中的 curl 等价物

转载 作者:IT王子 更新时间:2023-10-29 00:54:08 24 4
gpt4 key购买 nike

我正在尝试使用 net/http 将 json 文件发布到 ElasticSearch。通常在 Curl 中我会执行以下操作:

curl -XPOST localhost:9200/prod/aws -d @aws.json

在 golang 中,我使用了一个示例,但它没有用。我可以看到它发布,但必须设置不正确。我已经测试了我正在使用的 JSON 文件,一切顺利。

去代码:

  target_url := "http://localhost:9200/prod/aws"
body_buf := bytes.NewBufferString("")
body_writer := multipart.NewWriter(body_buf)
jsonfile := "aws.json"
file_writer, err := body_writer.CreateFormFile("upfile", jsonfile)
if err != nil {
fmt.Println("error writing to buffer")
return
}
fh, err := os.Open(jsonfile)
if err != nil {
fmt.Println("error opening file")
return
}
io.Copy(file_writer, fh)
body_writer.Close()
http.Post(target_url, "application/json", body_buf)

最佳答案

如果你想从文件中读取 json,那么使用 .

jsonStr,err := ioutil.ReadFile("filename.json")
if(err!=nil){
panic(err)
}

Simple way to post json in http post request.

    req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonStr))
req.Header.Set("Content-Type", "application/json")

client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()

fmt.Println("response Status:", resp.Status)
body, _ := ioutil.ReadAll(resp.Body)
fmt.Println("response Body:", string(body))

这应该可行

关于go - http.Post 数据二进制,golang 中的 curl 等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29529926/

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