我正在尝试将分段请求发布到Web API。我的控制器如下所示:
using (var client = new HttpClient())
{
var obj = JsonConvert.SerializeObject(
model,
Formatting.None,
new HttpPostedFileConverter());
var boundary = "----" + DateTime.Now.Ticks.ToString("x", NumberFormatInfo.InvariantInfo);
var contentType = new StringBuilder("multipart/form-data; boundary=")
.Append(boundary);
var httpContent = new StringContent(
obj,
Encoding.UTF8,
contentType.ToString()); //error shows here
var uri = new StringBuilder(_domain)
.Append("/api/email/send");
var response = await client.PostAsync(uri.ToString(), httpContent);
....
....
}
当我尝试添加contentType
时出现问题。它显示错误The format of value 'multipart/form-data; boundary=---***' is invalid.
Attachments
类型为List<HttpPostedFileBase>
。我之所以没有使用MultipartFormDataContent
,是因为我在模型中以json格式保存了上传的文件,而我不知道该如何与MultipartFormDataContent
一起使用。如果有人可以告诉我这里出了什么问题,或者如果这不是正确的发布方式,那么请给我看一个示例如何做。
答案 0 :(得分:0)
不确定这是否可以完全回答您的问题,但我正在处理此问题,发现有两种方法可以解决此问题...
方法一...
myHttpRequestMessage.Content.Headers.Remove("Content-Type");
myHttpRequestMessage.Content.Headers.TryAddWithoutValidation("Content-Type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW");
方法二...
myHttpRequestMessage.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("multipart/form-data");
myHttpRequestMessage.Content.Headers.ContentType.Parameters.Add(new System.Net.Http.Headers.NameValueHeaderValue("boundary", "----WebKitFormBoundary7MA4YWxkTrZu0gW"));
但是,话虽如此,在我的特定情况下(与您的情况不完全相同),解决方案是...
System.Net.Http.MultipartFormDataContent myMultipartFormDataContent = new System.Net.Http.MultipartFormDataContent("------WebKitFormBoundary7MA4YWxkTrZu0gW");
myMultipartFormDataContent.Add(new System.Net.Http.StringContent(myTextValue), "users_file", "userAccounts.csv");
myHttpRequestMessage.Content = myMultipartFormDataContent;