MultipartFormDataContent 未在 HttpRequestBody 中添加 Content-Type
MultipartFormDataContent not adding Content-Type in HttpRequestBody
我有一个简单的 HttpClient,它对端点执行 multipart/form-data post。
using (var httpClient = new HttpClient())
{
using (var request = new HttpRequestMessage(new HttpMethod("POST"), url))
{
MultipartFormDataContent mfdc = new MultipartFormDataContent();
mfdc.Add(new StreamContent(content: new MemoryStream(Encoding.UTF8.GetBytes("This is from a file"))),
name: "file",
fileName: "File1.txt");
var response = await httpClient.PostAsync(url, mfdc);
}
}
此代码生成此请求:
Content-Type: multipart/form-data; boundary="0d411b9f-a36b-4326-97b6-85c781d348d2"
Content-Length: 196
Host: somehost.net
--0d411b9f-a36b-4326-97b6-85c781d348d2
Content-Disposition: form-data; name=file; filename=File1.txt; filename*=utf-8''File1.txt
This is from a file
--0d411b9f-a36b-4326-97b6-85c781d348d2--
我 运行 遇到的问题是我正在调用的 API 也需要请求正文中的 Content-Type。
正确的请求应该是这样的:
Content-Type: multipart/form-data; boundary="0d411b9f-a36b-4326-97b6-85c781d348d2"
Content-Length: 196
Host: somehost.net
--0d411b9f-a36b-4326-97b6-85c781d348d2
Content-Disposition: form-data; name=file; filename=File1.txt; filename*=utf-8''File1.txt
Content-Type: text/plain
This is from a file
--0d411b9f-a36b-4326-97b6-85c781d348d2--
您还没有添加要发送的内容的内容类型。所以不会包含在请求中
using (var httpClient = new HttpClient()) {
MultipartFormDataContent form = new MultipartFormDataContent();
var stream = new MemoryStream(Encoding.UTF8.GetBytes("This is from a file"));
var fileContent = new StreamContent(content: stream);
//setting content type
fileContent.Headers.ContentType = new MediaTypeHeaderValue("text/plain");
form.Add(fileContent, name: "file", fileName: "File1.txt");
var response = await httpClient.PostAsync(url, form);
}
我有一个简单的 HttpClient,它对端点执行 multipart/form-data post。
using (var httpClient = new HttpClient())
{
using (var request = new HttpRequestMessage(new HttpMethod("POST"), url))
{
MultipartFormDataContent mfdc = new MultipartFormDataContent();
mfdc.Add(new StreamContent(content: new MemoryStream(Encoding.UTF8.GetBytes("This is from a file"))),
name: "file",
fileName: "File1.txt");
var response = await httpClient.PostAsync(url, mfdc);
}
}
此代码生成此请求:
Content-Type: multipart/form-data; boundary="0d411b9f-a36b-4326-97b6-85c781d348d2"
Content-Length: 196
Host: somehost.net
--0d411b9f-a36b-4326-97b6-85c781d348d2
Content-Disposition: form-data; name=file; filename=File1.txt; filename*=utf-8''File1.txt
This is from a file
--0d411b9f-a36b-4326-97b6-85c781d348d2--
我 运行 遇到的问题是我正在调用的 API 也需要请求正文中的 Content-Type。
正确的请求应该是这样的:
Content-Type: multipart/form-data; boundary="0d411b9f-a36b-4326-97b6-85c781d348d2"
Content-Length: 196
Host: somehost.net
--0d411b9f-a36b-4326-97b6-85c781d348d2
Content-Disposition: form-data; name=file; filename=File1.txt; filename*=utf-8''File1.txt
Content-Type: text/plain
This is from a file
--0d411b9f-a36b-4326-97b6-85c781d348d2--
您还没有添加要发送的内容的内容类型。所以不会包含在请求中
using (var httpClient = new HttpClient()) {
MultipartFormDataContent form = new MultipartFormDataContent();
var stream = new MemoryStream(Encoding.UTF8.GetBytes("This is from a file"));
var fileContent = new StreamContent(content: stream);
//setting content type
fileContent.Headers.ContentType = new MediaTypeHeaderValue("text/plain");
form.Add(fileContent, name: "file", fileName: "File1.txt");
var response = await httpClient.PostAsync(url, form);
}