Go 中的多部分请求
在 Go 中创建多部分请求可能具有挑战性,尤其是在遵循特定请求格式时。为了了解如何有效地使用多部分请求,让我们考虑一个目标请求采用以下形式的示例:
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
之前,曾尝试使用 multipart.NewWriter 和默认部分创建来生成此类请求,这导致了内容识别的问题。为了解决这个问题,可以使用以下方法:
body := &bytes.Buffer{} writer := multipart.NewWriter(body) // Create the part with the appropriate mime type part, _ := writer.CreatePart(textproto.MIMEHeader{"Content-Type": {"application/json"}}) part.Write(jsonStr) writer.Close() req, _ := http.NewRequest("POST", "blabla", body) req.Header.Set("Content-Type", "multipart/mixed; boundary="+writer.Boundary())
通过在创建部件时指定内容类型,请求可以遵循预期的格式并成功传输所需的数据。
以上是如何在 Go 中使用 Mime 类型构造多部分请求的详细内容。更多信息请关注PHP中文网其他相关文章!