Mal-tête Content-Type générées à l'aide de MultipartFormDataContent

J'ai le code suivant:

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;
}

Quand je le lance, je vois le Type de Contenu d'en-tête dans un violon:

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

Parce que la valeur limite est entre guillemets, le serveur ignore le corps de la requête. Si je supprime les guillemets et exécutez la requête dans un violon Compositeur, la demande est traitée correctement.

J'ai essayé d'ajouter le contenu des en-têtes:

//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);

... mais il ne fonctionne pas, les messages d'erreur ont été: "Impossible d'ajouter de la valeur à cause de l'en-tête" Content-Type " ne prend pas en charge plusieurs valeurs." et "Le format de la valeur" multipart/form-data; boundary=----CustomBoundary8d0f024297b32d5' est pas valide.", en conséquence.

Comment puis-je ajouter de la bonne-tête Content-Type de la demande, de sorte que la valeur limite ne serait pas mis entre guillemets?

Content-Type: multipart/form-data; boundary=----CustomBoundary8d0f01e6b3b5daf
Techniquement, le serveur doit accepter le paramètre limite cité. tools.ietf.org/html/rfc2046#section-5.1.1 Heureux que vous avez trouvé une solution de contournement.

OriginalL'auteur Yan F. | 2014-02-05