Подтвердить что ты не робот

Неверный заголовок Content-Type, сгенерированный с помощью 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, border = ---- CustomBoundary8d0f024297b32d5 "недействителен". Соответственно.

Как я могу добавить правильный заголовок Content-Type в запрос, чтобы граничное значение не было заключено в кавычки?

Content-Type: multipart/form-data; boundary=----CustomBoundary8d0f01e6b3b5daf
4b9b3361

Ответ 1

Решил это, удалив заголовок из MultipartFormDataContent и повторно добавив его обратно без проверки:

content.Headers.Remove("Content-Type");
content.Headers.TryAddWithoutValidation("Content-Type", "multipart/form-data; boundary=" + boundary);