我试图以它们发送到我的soap服务器的方式返回值,因此它们具有相同的XML结构 .
以下是具有各种属性的多个策略的示例请求 .
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsdl="https://customer-soap.example.com/?WSDL">
<soapenv:Header/>
<soapenv:Body>
<wsdl:SendPoliciesRequestInput>
<sesid>someid</sesid>
<!--Optional:-->
<policy product="product1" company="ges1" polizzenNr="pol1" premium="1" expiry="01.01.2000" info="blabla1"/>
<policy product="product2" company="ges2" polizzenNr="pol2" premium="2" expiry="02.01.2000" info="blabla2"/>
</wsdl:SendPoliciesRequestInput>
</soapenv:Body>
</soapenv:Envelope>
在我的PHP代码中,这转换为包含 sesid
的对象和 policy
元素的数组,如下所示:( print_r($request)
)
stdClass Object
(
[sesid] => someid
[policy] => Array
(
[0] => stdClass Object
(
[product] => product1
[company] => ges1
[Nr] => pol1
[premium] => 1
[expiry] => 01.01.2000
[info] => blabla1
)
[1] => stdClass Object
(
[product] => product2
[company] => ges2
[Nr] => pol2
[premium] => 2
[expiry] => 02.01.2000
[info] => blabla2
)
尝试将此确切对象返回给调用者时,以下代码
<php
class Example
{
public function SendPolicies($request)
{
return $request;
}
}
像这样的输出:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsdl="https://customer-soap.example.com/?WSDL">
<soapenv:Header/>
<soapenv:Body>
<wsdl:SendPoliciesRequestOutput>
<sesid>someid</sesid>
<!--Optional:-->
<policy />
</wsdl:SendPoliciesRequestOutput>
</soapenv:Body>
</soapenv:Envelope>
我尝试了几种方法,包括创建 SoapVar
,但这只会重新构造对象,而不是创建与输入完全相同的输出 .
非常感谢每一个帮助 .
1 回答
我最终使用了mounties解决方案:https://stackoverflow.com/a/24894102/8247069
问题似乎是我的代码在服务器端,因此(据我在研究期间能够发现)虽然我的服务器是使用WSDL启动的,但我无法切换到WSDL模式 .