您的位置:首页 > 其它

通讯转换工具开发_webservice储值卡项目总结之webservice复杂对象类型

2016-12-12 17:01 507 查看
这是我第二次做转发前置项目,依然是一个人独立完成。。。。

期间遇到了好多好多bug,现在也不敢说我的程序是多么完美,甚至很多地方,比如地址啊,端口啊,都写死了,后期有时间还需要大改一番,但,总算是在规定时间内完成了。。。

先从wsdl文档中的查询getsvcmaster说起:

<s:element name="getsvcmaster">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="astr_request" type="tns:getsvcmasterrequest"/>
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="getsvcmasterrequest">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="header" type="tns:requestheader"/>
<s:element minOccurs="0" maxOccurs="1" name="search" type="tns:svcsearch"/>
</s:sequence>
</s:complexType>
<s:complexType name="requestheader">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="licensekey" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="username" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="password" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="lang" type="s:string"/>
<s:element minOccurs="1" maxOccurs="1" name="pagerecords" type="s:int"/>
<s:element minOccurs="1" maxOccurs="1" name="pageno" type="s:int"/>
<s:element minOccurs="1" maxOccurs="1" name="updatecount" type="s:int"/>
<s:element minOccurs="0" maxOccurs="1" name="messagetype" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="messageid" type="s:string"/>
<s:element minOccurs="0" ma
4000
xOccurs="1" name="version" type="s:string"/>
</s:sequence>
</s:complexType>
<s:complexType name="svcsearch">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="txdate_yyyymmdd" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="txtime_hhmmss" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="storecode" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="tillid" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="svcardno" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="password" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="cashiercode" type="s:string"/>
</s:sequence>
</s:complexType>
<s:element name="getsvcmasterResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="getsvcmasterResult" type="tns:getsvcmasterresponse"/>
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="getsvcmasterresponse">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="header" type="tns:responseheader"/>
<s:element minOccurs="0" maxOccurs="1" name="master" type="tns:svcmaster"/>
</s:sequence>
</s:complexType>
<s:complexType name="responseheader">
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="responsecode" type="s:short"/>
<s:element minOccurs="0" maxOccurs="1" name="responsemessage" type="s:string"/>
<s:element minOccurs="1" maxOccurs="1" name="pagerecords" type="s:int"/>
<s:element minOccurs="1" maxOccurs="1" name="pageno" type="s:int"/>
<s:element minOccurs="1" maxOccurs="1" name="updatecount" type="s:int"/>
<s:element minOccurs="1" maxOccurs="1" name="maxrecords" type="s:int"/>
<s:element minOccurs="1" maxOccurs="1" name="maxpageno" type="s:int"/>
<s:element minOccurs="0" maxOccurs="1" name="messagetype" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="messageid" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="version" type="s:string"/>
</s:sequence>
</s:complexType>
<s:complexType name="svcmaster">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="systemdate_yyyymmdd" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="systemtime_hhmmss" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="svcardno" type="s:string"/>
<s:element minOccurs="1" maxOccurs="1" name="initialamount" type="s:decimal"/>
<s:element minOccurs="1" maxOccurs="1" name="balance" type="s:decimal"/>
<s:element minOccurs="0" maxOccurs="1" name="status" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="activedate_yyyymmdd" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="effectdate_yyyymmdd" type="s:string"/>
<s:element minOccurs="1" maxOccurs="1" name="extenddays" type="s:int"/>
</s:sequence>
</s:complexType>


很明显,属于复杂对象类型的webservice,一开始,我被这层层嵌套的关系绕晕了,发送给webservice根本不成功,网上也没找到类似复杂的例子,然后项目有很急,最终我终于发现,eclipse竟然可以根据wsdl地址自动生成客户端调用webservice的代码!!!!竟然!!!!!

步骤如下:

1.在项目中点击右键,选择New->Other

2.对话框列表中选择web services->web service client,然后点击next

3.service definition中填写wsdl地址,然后点击finish,就能自动生成了~~~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: