[英]httpwebresponse and encoding in silverlight
如何在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()
的結果,以查看該平台中可用的所有編碼。
考慮使用WebClient類 ,特別是DownloadStringAsync方法 :
var client = new WebClient();
client.DownloadStringCompleted += (sender, e) =>
{
string result = e.Result;
};
client.DownloadStringAsync(uri);
它使得作為異步操作執行HTTP請求比HttpWebRequest更簡單。 (在Silverlight中,HTTP請求必須是異步的。)並且它以字符串方便地提供結果,處理可能出現的所有編碼問題。 (服務器通常告訴客戶端使用哪種編碼。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.