我正在製作WP7應用程序,它正在使用我無法觸及的ASMX,也不適應,因爲我不是創建者,也不是提供者,我只是在使用它。WP7無法正確使用ASMX?總是得到空陣列?
當我將服務引用添加到我的WP7解決方案(不是芒果 - 但它與芒果中的行爲相同)時,我將取消選中「引用程序集中的重用類型」,因爲我不關心這些。注意:即使當我離開復選框時,它也不起作用。
然後我下面的代碼添加到新的WP7頁面的構造函數:
MobileWS.WebServiceSoapClient ws = new MobileWS.WebServiceSoapClient("WebServiceSoap", "http://www.somewhere.com/MobileService.asmx");
ws.getCountriesCompleted += new EventHandler<MobileWS.getCountriesCompletedEventArgs>(OnGetCountriesCompleted);
ws.getCountriesAsync("fr");
這熄滅,並獲取國家對象的數組(「FR」代表「法國」,所以它會成爲「Etas Unis」而不是「美國」)......至少這是主意。 我甚至用Fiddler2檢查它是否返回任何東西,事實上,ASMX用包含這些國家的一些XML進行響應。
然後我的處理程序是這樣的:
private void OnGetCountriesCompleted(object sender, MobileWS.getCountriesCompletedEventArgs e)
{
if (e.Cancelled == false && e.Error == null && e.Result != null)
{
List<MobileWS.Country> countries = e.Result.ToList<MobileWS.Country>();
CountriesListBox.ItemsSource = countries;
}
}
不幸的e.Result總是返回國的對象(所以非空數組可言,但他知道應該在那裏的國家目標,但有在數組中是0項)!
不過,如果我瀏覽到:http://www.somewhere.com/MobileService.asmx我得到的名單時,我調用的getCountries功能。 更奇怪的是,當我複製並通過WPF應用程序中完全相同的代碼時,它的作用就像一個魅力,我得到一個有7個國家對象的填充數組。
我拒絕解析返回的XML自己,到目前爲止,但我感覺我需要早晚因爲這個失敗。
我敢肯定,這是回送XML是正確的,否則WPF應用程序將有類似的問題,不是嗎?
所以,看起來像我註定要分析它自己呢? 我在網上看到了很多他們這樣做的例子(解析XML自己的結果),所以必須有一個原因,那就是我上面描述的原因:)。
你是什麼意思與「反序列化的結果自己」 ......我或多或少這樣做,現在我認爲,我的「解析」,「補」,從web服務的對象WebGet的(不知道它是如何再次呼籲,但它基本上是一個httpget)。 – Michael
我的意思是通過使用XmlSerializer ... –