2013-06-06 14 views
15

Questo mi sta facendo impazzire, sto impostando l'intestazione ContentType ovunque posso e non riesco a farlo smettere di inviare testo/plain.Forzare HttpClient per utilizzare Content-Type: text/xml

Guardando i dati in Fiddler, la richiesta è sempre richiede:

POST http: /domain.com HTTP/1.1

Content-Type: text/plain;

using (var httpClient = new HttpClient()) 
{ 
    var request = new HttpRequestMessage(HttpMethod.Post, "http://domain.com"); 
     request.Content = new StringContent(Serialize(obj), Encoding.UTF8, "text/xml"); 
     request.Content.Headers.Clear(); 
     request.Content.Headers.ContentType = new MediaTypeHeaderValue("text/xml"); 
     request.Headers.Clear(); 
     request.Headers.Add("Content-Type","text/xml"); 
     var response = await httpClient.SendAsync(request); 
     return await response.Content.ReadAsStringAsync(); 
} 

risposta

5

impostazioni provare le intestazioni di richiesta di default charset = utf-8:

client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("text/xml")); 
+3

no, provato. Ma l'intestazione Accept non sarebbe d'aiuto. Sto cercando di impostare l'intestazione Content-Type –

+0

perfettamente funzionante per me. –

21

Sembra che si è tentato di difficile :) Questo dovrebbe funzionare.

using (var httpClient = new HttpClient()) 
{ 
    var request = new HttpRequestMessage(HttpMethod.Post, "http://domain.com"); 
    request.Content = new StringContent(Serialize(obj), Encoding.UTF8, "text/xml"); 
    var response = await httpClient.SendAsync(request); 
    return await response.Content.ReadAsStringAsync(); 
} 
+1

Dovrebbe, ma non lo è. Ho iniziato con semplici tentativi del genere. Hai controllato l'output in Fiddler? –

+0

Sì, l'ho fatto. Che piattaforma usi? Ho provato ConsoleApplication con .NET Framework (sul desktop) – outcoldman

+0

Questo ha funzionato perfettamente per me –

3

Usa "application/xml" invece di "text/xml"

Problemi correlati