猿问

http.Post 数据二进制文件,相当于 golang 中的 curl

我正在尝试使用 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)


PIPIONE
浏览 400回答 2
2回答
随时随地看视频慕课网APP

相关分类

Go
我要回答