2011-01-03 6 views
1

私はこのことに非常に長い間苦労してきました。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

コンテンツタイプは、サーバーへの送信を計画しているかどうかを示すために使用され、受け入れは返す予定です。

答えて

2

WebClientの代わりにWebRequestを使用します。

WebRequestには、コンテンツタイプを設定するために使用できるContentTypeプロパティがあります。

+0

Michael、このようにWebClientを使用することはできないと私は言っていますか? –

+1

修正します。WebHeaderCollectionクラスのドキュメントを参照してください。http://msdn.microsoft.com/en-us/library/system.net.webheadercollection(VS.95).aspx –

+0

マイケルに感謝します!私が一番下のセクションを逃したとは信じられません。あなたは "Restricted Headers"というタイトルを知っています。私が投稿する前にそのページを3回読んでいなければならない...謎解き、ありがとう。 –

関連する問題