2011-01-23 8 views
1

でwebserviceを消費しています。私はasp.netを勉強しており、Webサービスを消費することを理解しようとしています。私は郵便番号を入力するテキストボックスを使用していますasp.netとC#

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

ウェブリファレンスでWSDLを追加し、次のWSDLファイルを使用していて、データを取得するためにC#を使用しています。次のようにデータの構造は次のとおりです。

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

私は、Webページ上の結果を表示する方法について理解することはできませんよ。次のコードで誰もが私に

どうもありがとう

答えて

2

GetInfoByZIPの呼び出しにカーソルを合わせると、XmlNodeが返されるはずです。 XmlNodeから文字列への暗黙的な変換はないので、結果を文字列に直接代入することはできません。文字列値を取得するには、XmlNodeのプロパティを呼び出すOuterXml、そう(必ず複数行のテキスト・コントロールがあることを確認してください)のように:WSDLパー

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

、通話ができ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

0

を便利ポインタを与えることができる場合は、コントロールのTextプロパティにresultを割り当てることができますいずれかの素晴らしいだろう..私が今まで持っているもの

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

} 

です(リテラル、ラベルなど)、またはResponse.Write()を使用できます。それをコントロールに割り当てることは良い方法です。レスポンスストリームにポンピングするだけで、どこにどのように表示されるのか分かりません。 2行目も

postCodeInfo.Text = result; 

:のリテラルTextプロパティにresult

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

そして、あなたのButton1_Clickイベントの最後に、割り当てる:あなたがコントロールを追加する必要があり、あなたのaspxページでは

私は zipcode.Textが文字列だと仮定していますので、 ToString()を再度呼び出す必要はありません(文字列でない場合は、多分そうしてください)。

+0

返信いただきありがとうございます。私は結果がXML構造だと思う。それは '暗黙のうちに型System.Xml.XmlNodeを文字列 – DG3