Неправильный заголовок типа контента, созданный с помощью MultipartFormDataContent
у меня есть следующий код:
private static string boundary = "----CustomBoundary" + DateTime.Now.Ticks.ToString("x");
private static async Task<string> 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;
}
когда я запускаю его, я вижу заголовок Content-Type в Fiddler:
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
1 ответов
решил это, удалив заголовок из MultipartFormDataContent и повторно добавив его обратно без проверки:
content.Headers.Remove("Content-Type");
content.Headers.TryAddWithoutValidation("Content-Type", "multipart/form-data; boundary=" + boundary);