HTTP Multipart Requests in Go
Creating multipart requests, commonly used for sending data in specific formats, can be achieved using the multipart package in Go. Let's explore how to tackle this.
Consider the following scenario: sending a multipart POST request that consists of both JSON data and a boundary. This boundary separates different parts of the request.
Numerous attempts have been made, as illustrated in the given code snippet. However, the server consistently returns a 200 HTTP error, indicating that the message type is unsupported.
To resolve this, we need to correctly set the Content-Type of each part. Here's the modified code:
<code class="go">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", "multipart/mixed; boundary="+writer.Boundary(), )</code>
By setting the Content-Type: application/json for the part containing the JSON data, we ensure that the server can correctly interpret the request. The boundary parameter is also set appropriately to match the expected format.
The above is the detailed content of How to Set Proper Content-Type for Multipart POST Requests in Go?. For more information, please follow other related articles on the PHP Chinese website!