2013-06-06 8 views
15

これは私を苦労させています。私はContentTypeヘッダーをどこでも設定できます。HttpClientにContent-Typeを強制的に使用させてください:text/xml

要求が常に要求され、フィドラー内のデータを見て:

POSTのhttp:/domain.com HTTP/1.1

のContent-Type:text/plainの。文字セット= UTF-8

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

答えて

5

てみ設定デフォルトリクエストヘッダ:

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

の "アプリケーション/ xmlのは、" いいえ、それを試してみました。しかし、Acceptヘッダーは役に立ちません。私はContent-Typeヘッダーを設定しようとしています –

+0

完全に私のために働いた。 –

21

あなたはハードにしようとしたように:)これは単に動作するはずに見えます。

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

それはすべきですが、そうではありません。私はそのような簡単な試みから始めました。フィドラーの出力をチェックしましたか? –

+0

うん、私はした。どのプラットフォームを使用しますか?私はConsoleApplicationを.NET Framework(デスクトップ)で試しました – outcoldman

+0

これは私にとって完璧に機能しました –