【发布时间】:2011-07-12 10:16:08
【问题描述】:
我有一个 Web 服务,它接受一个包含 6 个字符串的 RequestDTO。在测试 web 服务时,我只需发送一个这样的 XML,它就可以正常工作:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:java="java:dk.thg.fll"
xmlns:java1="java:dk.thg.common">
<soapenv:Header/>
<soapenv:Body>
<web:service>
<web:request>
<java:request>
<java1:Id>1</java1:Id>
<java1:User>anton</java1:User>
</java:request>
<java:ms>4453</java:ms>
<java:element>GG</java:element>
<java:service>L</java:service>
<java:data><![CDATA[ <data><task><type>T</type><action>A</action> </task></data> ]]></java:data>
</web:request>
</web:service>
</soapenv:Body>
</soapenv:Envelope>
我现在的问题是我必须创建一个可以处理一组请求的网络服务。我的想法是简单地拥有一组 RequestDTO。这意味着新的 Web 服务采用 MultiRequestDTO,其中包含一组 RequestDTO。
但是 XML 应该是什么样子的呢? - 当我使用 SoapUI 进行测试时,它会自动生成请求 xml,这就是它所说的我的新 Web 服务 XML 的样子:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:java="java:dk.thg.fll"
xmlns:java1="java:dk.thg.common">
<soapenv:Header/>
<soapenv:Body>
<web:service>
<web:multiRequest>
<java:request>
<java1:Id>?</java1:Id>
<java1:User>?</java1:User>
</java:request>
<java:requests/>
</web:multiRequest>
</web:service>
</soapenv:Body>
</soapenv:Envelope>
发送请求时(我的数组)应该是什么样子?
我尝试简单地从第一个 XML 中复制内容(复制了标签),但没有成功..
谁能帮忙?
* 编辑 * - 请求
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:java="java:dk.thg.fll" xmlns:java1="java:dk.thg.common">
<soapenv:Header/>
<soapenv:Body>
<web:service>
<web:multiRequest>
<java:requestInfo>
<java1:Id>10</java1:Id>
<java1:User>1234</java1:User>
</java:requestInfo>
<java:requests>
singleRequest
<java:request>
<java1:Id>10</java1:Id>
<java1:User>789</java1:User>
</java:request>
<java:msisdn>4561814453</java:msisdn>
<java:element>4453</java:element>
<java:service>GG</java:service>
<java:details><![CDATA[ <details><task><type>T</type><action>A</action> </task></details>]]></java:details>
</java1:singleRequest>
</java:requests>
</web:multiRequest>
</web:service>
这是我现在发送的内容.. 但是里面的所有值都没有收到,并且数组中的对象只包含空值。
【问题讨论】:
-
在你的 XML 中哪个元素是数组类型?
-
java:requests 是数组类型
-
是否正在使用任何 XSD 或元素在 wsdl 中声明?而对于您的 java:request 是 maxOccurs="unbounded" ?
标签: java xml web-services soap