我正在嘗試進行基本的webclient調用,以便爲WP7的帖子跟蹤應用程序獲取xml流。它工作,我得到的XML,但問題是,因爲我住在瑞典我們有特殊字符作爲åää等等,對於這些人物,我只收到一個帶有問號的盒子。閱讀ISO 8859 1編碼,使用webclient下載xml流
的XML文件,我想看起來像這樣:
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes" ?>
<pactrack version="2.0" date="Sat Jan 14 18:29:26 CET 2012" size="2125" lang="SE">
<header>
<noofparcelentries>1</noofparcelentries>
...
所以編碼是ISO-8859-1,我想這是我的問題。一直試圖在這裏在論壇上的解決方案讀取和一些說,雖然有些不是格式支持: Reading iso-8859-1 rss feed C# WP7
我一直在嘗試不同的充編碼添加到客戶端,但似乎沒有任何幫助,我的XML是失蹤特殊符號總是。然而,有一個奇怪的行爲,有點讓我感到厭煩,如果我添加一個錯誤的跟蹤號碼,而不是數字放入特殊字符,我可以突然讀取一些特殊字符,我從服務器獲得的XML是一個錯誤消息,其中包含跟蹤號碼見下文,但xml的定義是一樣的。
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<pactrack version="2.0" date="Sat Jan 14 18:34:43 CET 2012" size="389" lang="SE" >
<header>
<noofparcelentries>1</noofparcelentries>
<noofuniqueparcels>1</noofuniqueparcels>
</header>
<body>
<parcel id="8538öööåå54248SE"> //I can read this road of xml suddenly
<customerref></customerref>
<internalstatus>0</internalstatus>
人有什麼想法?我是一個初學者,完全失去了這個問題,所以任何幫助將不勝感激!第一個xml和第二個xml是否有區別?在我看來,也許我不能看到嵌套在節點中的特殊章程,這可能是問題嗎?
WebClient client = new WebClient();
public MainPage()
{
InitializeComponent();
client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(client_DownloadProgressChanged);
client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(client_DownloadStringCompleted);
}
void client_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
if (e.UserState as string == "mobiforge")
{
txtStatus.Text = e.BytesReceived.ToString() + "bytes received.";
}
}
public void client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
if (e.Error == null && !e.Cancelled)
{
MessageBox.Show(e.Result);
}
}
private void btnDownload_Click(object sender, RoutedEventArgs e)
{
client.DownloadStringAsync(new Uri("http://server.logistik.posten.se/servlet/PacTrack?lang=SE&kolliid=85380954248SE"), "posten");
}
是的,現在支持Latin-1。它不是最初(我曾經有一個自定義的編碼類)。我認爲這是beta SDK,不支持它。 – 2012-01-14 19:00:01
您好,非常感謝您的幫助,試過這個,但是當我打電話給client.OpenReadAsync它似乎沒有得到任何結果,並給client_DownloadProgressChanged什麼都沒有?任何建議爲什麼?克勞斯,因爲我猜你是來自北歐國家,你有沒有經歷過這個?我仍然對xml感到困惑,因爲我收到爲什麼當我收到錯誤消息時我實際上可以讀取特殊字符... – Krst 2012-01-14 20:06:22
有可能是服務器沒有發送'content-length'屬性。您可以使用Fiddler來監控流量,以查看請求/響應的內容。此外,而不是'DownloadProgressChanged',處理'OpenReadCompleted'事件,看看流是否返回。 – keyboardP 2012-01-14 20:11:51