C# silverlight中的httpwebresponse和编码

C# silverlight中的httpwebresponse和编码,c#,silverlight,C#,Silverlight,如何在silverlight中获取httpWebresponse? 没有方法getResponse,因此此代码不起作用 HttpWebResponse resp = (HttpWebResponse)req.GetResponse(); 如何改变这一点 ...new StreamReader(resp.GetResponseStream(), Encoding.GetEncoding(1251))) 我在1251上出错了。编码的名称是什么?对于第一个:您需要使用异步版本,因为SL中没有同步网

如何在silverlight中获取
httpWebresponse
? 没有方法
getResponse
,因此此代码不起作用

HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
如何改变这一点

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

我在1251上出错了。编码的名称是什么?

对于第一个:您需要使用异步版本,因为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()
的结果,以查看该平台中可用的所有编码。

考虑使用,尤其是:

与HttpWebRequest相比,将HTTP请求作为异步操作执行更为简单。(在Silverlight中,HTTP请求必须是异步的。)并且它以字符串的形式方便地提供结果,处理可能出现的所有编码问题。(服务器通常会告诉客户端使用哪种编码。)

var client = new WebClient();

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

client.DownloadStringAsync(uri);