私はこのことに非常に長い間苦労してきました。Silverlight 4 WebClient、HttpRequestHeader.ContentTypeをapplication/jsonに設定することができません
私は、WCFゼロ設定エンドポイント、Webサイト自体、およびSL 4アプリケーションをホストするMVC 3 RC2サイトを持っています。 SLのアプリがエンドポイントからのデータをプルダウンするWeClientオブジェクトを使用すると、データは "バック私は、私が受け取る
var client = new WebClient();
var uri = new Uri("http://example.com/Services/GetFoodDescriptionsLookup(2100)");
// A WebClient instance does not send optional HTTP headers by default.
// If your request requires an optional header,
// you must add the header to the Headers collection.
// http://msdn.microsoft.com/en-us/library/system.net.webheadercollection.aspx
// WRONG
client.Headers[HttpRequestHeader.ContentType] = "application/json";
// RIGHT
client.Headers[HttpRequestHeader.Accept] = "application/json";
client.DownloadProgressChanged += (o, e) =>
{
Status = String.Format("BytesReceived : {0}", e.BytesReceived);
};
client.DownloadStringCompleted += (o, e) =>
{
Status = "Downloading...Done.";
Result = e.Result;
};
client.DownloadStringAsync(uri);
このスニペットでヘッダを変更しようとするXML(そう言われない限り、デフォルト)として来ていますオブジェクトの現在の状態のため、操作が有効ではありません。私がそれを削除すると、呼び出しは成功しますが、xmlとして戻ってきます。
私の質問の本質は、 "コンテンツタイプをapplication/jsonに変更して、wcfサービスがJSONを返すことができるようにするにはどうすればいいですか"です。エンドポイントは、jQueryを使用してWebブラウザで正しいフォーマットをプルダウンできるので機能します。
ありがとう、 スティーブン
私は以来、私はこの例では、とHttpWebRequestクラスHow do I use HttpWebRequest GET method w/ ContentType="application/json"と、この1の両方で、すべて間違ってこれをやったことがグレン・ブロックから学んだEDIT
コンテンツタイプは、サーバーへの送信を計画しているかどうかを示すために使用され、受け入れは返す予定です。
Michael、このようにWebClientを使用することはできないと私は言っていますか? –
修正します。WebHeaderCollectionクラスのドキュメントを参照してください。http://msdn.microsoft.com/en-us/library/system.net.webheadercollection(VS.95).aspx –
マイケルに感謝します!私が一番下のセクションを逃したとは信じられません。あなたは "Restricted Headers"というタイトルを知っています。私が投稿する前にそのページを3回読んでいなければならない...謎解き、ありがとう。 –