Как использовать multipart в Голанге - PullRequest
0 голосов
/ 25 сентября 2019

Мне нужно сгенерировать многочастный почтовый запрос этой формы:

POST /blabla HTTP/1.1
Host: 2.2.2.2
Authorization: moreblabla Content-Type: multipart/mixed; boundary=--rs0q5Jq0M2Yt08jU534d1q Content-Length: 347
Node: 1.1.1.1.1
--rs0q5Jq0M2Yt08jU534d1q Content-Type: application/json

{"hello" : "world"}
--rs0q5Jq0M2Yt08jU534d1q

(если вы знаете, как создать вышеперечисленное с помощью Curl, пожалуйста, дайте мне совет;)) Я попробовал следующее:


var jsonStr = []byte(`{"hello" : "world"}`)

func main() {

    body := &bytes.Buffer{}
    writer := multipart.NewWriter(body)

    part, _:= writer.CreateFormField("")

    part.Write(jsonStr)
    writer.Close()

    req, _ := http.NewRequest("POST", "blabla", body)
    req.Header.Set("Content-Type", writer.FormDataContentType())

   ...

}

Но сервер не может прочитать содержимое тела.Он отвечает HTTP-запросом 200, но в нем говорится, что тип сообщения не поддерживается.

Итак, как мне сгенерировать составной / смешанный запрос, имеющий форму выше?

Спасибо, любезнозаранее за вашу помощь.

1 Ответ

1 голос
/ 26 сентября 2019

Используйте это так:

body := &bytes.Buffer{}
writer := multipart.NewWriter(body)

part, _ := writer.CreatePart(textproto.MIMEHeader{"Content-Type": {"application/json"}})
part.Write(jsonStr)

writer.Close()

req, _ := http.NewRequest("POST", "http://1.1.1.1/blabla", body)
req.Header.Set("Content-Type", writer.FormDataContentType())

Запустите его на детской площадке .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...