応答の Content-Type を取得する方法、または WebClient を使用して Silverlight で送信要求の Content-Type を逆に設定する方法はありますか?
編集
http リクエストを作成し、進行状況を表示できるようにする必要があります。リクエストを作成するための機構を汎用モジュールにパッケージ化し、それをコードのあらゆる場所で使用したいと考えています。これは私がすでにやったことです。POSTでサーバーにさまざまなタイプのデータを送信するときに問題があるようです。サーバーにデータが何であるかを伝える方法がありません(json、xml、フォームエンコード、バイナリ)
リクエストで ?content-type=x を渡し、サーバーが Content-Type ヘッダーよりもそれを優先するように設定することで、これに対処できると思います。
また、サーバーがどのようなコンテンツで応答するかを知る方法もありません。リクエストを行うときに、期待されるタイプのデータを渡すことでこれを解決できると思います。
誰かがより良い解決策を持っている場合は、話してください:)
/編集
これが私の苦境です。HttpWebRequest/Response オブジェクトは、要求の進行状況を監視できる内部インターフェイスを実装します。大規模なリクエストを行う場合、ユーザーがダウンロード/アップロードのステータスを示すプログレス バーを確認できるようにすることが非常に重要です。
したがって、HttpWebRequest/Response を使用することはできません。WebClient だけを残していますが、奇妙な点がいくつかあります。
サブクラス化することはできません。実際には封印されていませんが、コンストラクターは [SecuritySafeCritical] とマークされています。これは、私が知る限り、派生クラスから呼び出すことができないことを意味します。少なくとも私は失敗し、Google で失敗した人を見つけましたが、この点で間違っていることが証明されて非常に嬉しく思います。
内部的には、抽象 Headers プロパティをオーバーライドしない BrowserHttpWebResponse を使用し、WebClient.ResponseHeaders は単に NotImplementedException をスローする m_Response.Headers に転送します。
Content-Type が ResponseHeaders に含まれているかどうかはわかりませんが、確認したいと思います。
Silverlight では、進捗情報または Content-Type 情報を保持するという不幸な選択をしているようですが、両方を保持することはできません。
ドキュメントによると、WebClient を使用して送信要求に Content-Type を設定する方法もないようです。Content-Type は、制限付きヘッダーとしてリストされています。私は実際にこれをテストしていません。
エラーが発生した場合、実際には応答オブジェクトが渡され、StatusCode、Content-Type などにアクセスできることに注意してください。