簡體   English   中英

在silverlight中httpwebresponse和編碼

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM