php soapclient数组转换为字符串

时间:2014-08-27 10:10:13

标签: php soap soap-client

我的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>

1 个答案:

答案 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会帮助你。