0

Silverlightを使用する方法はhttpWebresponse?メソッドがないgetResponseため、このコードは機能しません

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

そしてこれを変更する方法

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

1251でエラーが発生しました。エンコーディングの名前は何ですか?

4

2 に答える 2

1

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
}

2 つ目 (ちなみに、次回は 2 つの質問をすることを検討してください) については、そのエンコーディングが Silverlight でサポートされていない可能性があります。の結果をループして、Encoding.GetEncodings()そのプラットフォームで利用可能なすべてのエンコーディングを確認します。

于 2012-05-10T00:39:57.283 に答える
1

WebClient クラス、特にDownloadStringAsync Methodの使用を検討してください。

var client = new WebClient();

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

client.DownloadStringAsync(uri);

HttpWebRequest よりも HTTP 要求を非同期操作として簡単に実行できます。(Silverlight では、HTTP 要求は非同期である必要があります。)また、発生する可能性のあるすべてのエンコーディングの問題に対処して、結果を文字列として便利に提供します。(サーバーは通常、使用するエンコーディングをクライアントに通知します。)

于 2012-05-10T00:56:50.370 に答える