我的SOAP请求中有一个深层次的数组,如下所示。当我运行SoapRequest时,我得到通知(8):数组到字符串转换,我的XML响应不会将RTrans中的数组转换为XML,我不知道为什么。我如何创建SOAP请求及其XML版本可以在下面找到。
请求:
$r['request'] = array(
'request' => array(
'user' => 'test',
'password' => 'test',
'RTrans' => array(
'Transactions' => array(
'Criteria' => array(
'Name' => 'Thomas'
)
)
)
)
);
try{
$response = $this->apiClient->DoQuery($r);
}
catch(Exception $e){
debug($e);
}
XML版本
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns1="http://webServices/">
<SOAP-ENV:Body>
<ns1:DoNormalEnquiry>
<request>
<username>test</usernmae>
<password>test</password>
<RTrans>Array</RTrans>
</request>
</ns1:DoNormalEnquiry>
</SOAP-ENV:Body>
答案 0 :(得分:0)
我认为RTrans被定义为一个字符串。请看一下wsdl文件。 也许这就是你得到的原因&#34; Array&#34;在xml中。
要将数组发送到soapservice,您可以将其转换为json。 json_encode(array(&#39; Transactions&#39; =&gt;数组(&#39; Criteria&#39; =&gt;数组(&#39;名称&#39; =&gt;&#39; Thomas&#39;) ));
或定义复杂的数据类型。
也许SoapVar会帮助你。