2011-01-23 64 views
1

我正在學習asp.net,並試圖瞭解在使用web服務。我使用下面的WSDL文件消費與asp.net和C webservice#

http://www.webservicex.net/uszip.asmx?WSDL

我用一個文本框輸入的郵政編碼,在添加Web引用的WSDL,並且正在使用C#來檢索數據。數據的結構如下:

http://www.webservicex.net/uszip.asmx/GetInfoByZIP

我無法理解如何顯示網頁上的結果上。下面的代碼是我到現在爲止..

protected void Button1_Click(object sender, EventArgs e) 
{ 
    USZip s1 = new USZip(); 
    var input = zipcode.Text.ToString(); 
    String result = s1.GetInfoByZIP(input); 

} 

這將是巨大的,如果任何人都可以給我幫助的指針

非常感謝

回答

2

將鼠標懸停在對GetInfoByZIP的調用上,您應該看到它返回一個XmlNode。由於沒有從XmlNode到字符串的隱式轉換,因此您不應該能夠將結果直接分配給字符串。要獲取字符串值,調用XmlNode的財產OuterXml,像這樣(請確保您有一個多行文本控件):

XmlNode result = s1.GetInfoByZIP(input);  
YourTextControl.Text = result.OuterXml; 

%的WSDL,調用返回GetInfoByZipResult,它可以包含任何XML(在WSDL中沒有進一步的說明)。我得到的XML看起來像下面的XML。所以,如果你想得到City,State等的名字,你需要解析XML。

<NewDataSet xmlns=""> 
    <Table> 
    <CITY>Glendale</CITY> 
    <STATE>CA</STATE> 
    <ZIP>91210</ZIP> 
    <AREA_CODE>818</AREA_CODE> 
    <TIME_ZONE>P</TIME_ZONE> 
    </Table> 
</NewDataSet> 
+0

非常感謝。你的回答幫助了我。 – DG3 2011-01-23 05:21:49

0

您可以指定result到控制的Text財產(如文字或標籤),或者您可以使用Response.Write()。將它分配給控件是更好的方法,因爲只是將它抽出到響應流中可能不會讓它顯示在您想要的位置和方式。

在你的aspx頁面,您應該添加控制:

<asp:Literal Id="postCodeInfo" runat="server"></asp:Literal> 

而在你的Button1_Click活動結束後,分配result到文字的Text屬性:

postCodeInfo.Text = result; 

而且在第二行,我假設zipcode.Text是一個字符串,所以你不需要再次調用ToString()(如果它不是一個字符串,也許你會這樣做)。

+0

感謝您的回覆。我認爲結果是一個XML結構。它顯示'不能隱式轉換類型System.Xml.XmlNode字符串 – DG3 2011-01-23 01:30:14