2012-05-10 5 views
0

httpWebresponseをsilverlightで入手するには? 方法getResponseので、このコードはhttpwebresponseとsilverlightでエンコーディングする

HttpWebResponse resp = (HttpWebResponse)req.GetResponse(); 

そして、どのようにエンコードの1251どのような名前で、この

...new StreamReader(resp.GetResponseStream(), Encoding.GetEncoding(1251))) 

私が持っているエラーを変更するには動作しませんがないのですか?

答えて

1

初めての場合:SLに同期ネットワークコールがないため、非同期バージョンを使用する必要があります。第二のために

public void Button_Click(object sender, EventArgs e) 
{ 
    HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url); 
    req.Method = "GET"; 
    req.BeginGetResponse(HWRCallback, req); 
} 

void HWRCallback(IAsyncResult ar) 
{ 
    HttpWebRequest req = (HttpWebRequest)ar.AsyncState; 
    HttpWebResponse resp = (HttpWebResponse)req.EndGetResponse(ar); 
    // use response 
} 

(方法によって、二つの質問を尋ねる次の時間を考慮して)、多分そのエンコーディングは、Silverlightでサポートされていません。 Encoding.GetEncodings()の結果をループして、そのプラットフォームで使用できるすべてのエンコードを確認します。

1

WebClient Classの使用を検討し、特にDownloadStringAsync Method:それはそれは単純HttpWebRequestのより非同期操作などのHTTPリクエストを行うことが可能となる

var client = new WebClient(); 

client.DownloadStringCompleted += (sender, e) => 
{ 
    string result = e.Result; 
}; 

client.DownloadStringAsync(uri); 

。 (Silverlightでは、HTTPリクエストは非同期である必要があります)また、結果として発生する可能性のあるエンコードの問題をすべて処理するために、結果を文字列として便利に提供します。 (通常、サーバーはクライアントにどのエンコーディングを使用するかを指示します。)

関連する問題