使用MultipartFormDataContent生成错误的Content-Type标头
我有以下代码:
private static string boundary = "----CustomBoundary" + DateTime.Now.Ticks.ToString("x"); private static async Task PostTest() { string servResp = ""; using (var content = new MultipartFormDataContent(boundary)) { content.Add(new StringContent("105212"), "case-id"); content.Add(new StringContent("1/14/2014"), "dateFrom"); content.Add(new StringContent("1/15/2014"), "dateTo"); HttpClientHandler handler = new HttpClientHandler(); cookieContainer = new CookieContainer(); handler.CookieContainer = cookieContainer; HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "http://somewebsite.com/form"); request.Headers.ExpectContinue = false; request.Content = content; httpClient = new HttpClient(handler); HttpResponseMessage response = await httpClient.SendAsync(request); response.EnsureSuccessStatusCode(); servResp = await response.Content.ReadAsStringAsync(); } return servResp; }
当我运行它时,我在Fiddler中看到了Content-Type标头:
Content-Type: multipart/form-data; boundary="----CustomBoundary8d0f01e6b3b5daf"
由于边界值在引号中,服务器会忽略请求正文。 如果我删除引号并在Fiddler Composer中运行请求,则正在正确处理请求。
我尝试添加内容标题:
//request.Content.Headers.Add("Content-Type", "multipart/form-data; boundary=" + boundary); //request.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("multipart/form-data; boundary=" + boundary);
…但它不起作用,错误消息是:“无法添加值,因为标题’Content-Type’不支持多个值。” 和“格式值’multipart / form-data,boundary = —- CustomBoundary8d0f024297b32d5’无效。”,相应地。
如何将正确的Content-Type标头添加到请求中,以便边界值不会用引号括起来?
Content-Type: multipart/form-data; boundary=----CustomBoundary8d0f01e6b3b5daf
通过从MultipartFormDataContent中删除标头并重新添加它而不进行validation来解决此问题:
content.Headers.Remove("Content-Type"); content.Headers.TryAddWithoutValidation("Content-Type", "multipart/form-data; boundary=" + boundary);
- App_Global.asax.compiled和App_Global.asax.dll丢失了吗? WebApi .NET 4.5项目
- 默认事件添加/删除实现
- SQLite.NET – System.NotSupportedException:无法编译:参数
- 在ZipArchive C#.Net 4.5中创建目录
- 尽管UseColumnTextForButtonText设置为true,但DataGridView按钮文本仍未显示
- “Product:*”部分中未解决的符号’Property:NETFRAMEWORK45’的引用
- DelegatingHandler用于WebApi中的响应
- HttpClient身份validation标头未被发送
- 大对象堆压缩,什么时候好?