SOAP错误:编码:对象没有'ACCION'属性

时间:2019-02-04 20:34:47

标签: php

我有一个PHP脚本,该脚本调用了在SAP中创建的Web服务,我已经用soapui5对其进行了验证,并且可以正常工作,但是PHP抛出以下消息:

SOAP-ERROR: Encoding: object has no 'ACCION' property

PHP代码:

$url = 'https://www.ceramicaitalia.com/wssap/zwebservice1.wsdl';
        $client = new SoapClient($url);
       echo PHP_EOL;

        $xmlr = new SimpleXMLElement("<ZWS_WEBSERVICE1></ZWS_WEBSERVICE1>");
        $xmlr->addChild('login', '***');
        $xmlr->addChild('password', '******');
        $xmlr->addChild('ACCION', '/');


        $params = new stdClass();
        $params->xml = $xmlr->asXML();
         $client->ZWS_WEBSERVICE1($params);
        $result = $client->ZWS_WEBSERVICE1('RTA');
        print_r($result);  

在soapui5中测试

请求:

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
                xmlns:urn="urn:sap-com:document:sap:rfc:functions">
   <soap:Header/>
   <soap:Body>
      <urn:ZWS_WEBSERVICE1>
         <ACCION>/</ACCION>
      </urn:ZWS_WEBSERVICE1>
   </soap:Body>
</soap:Envelope>

响应:

<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
   <env:Header/>
   <env:Body>
      <n0:ZWS_WEBSERVICE1Response xmlns:n0="urn:sap-com:document:sap:rfc:functions">
         <RTA>1.5</RTA>
      </n0:ZWS_WEBSERVICE1Response>
   </env:Body>
</env:Envelope>

1 个答案:

答案 0 :(得分:0)

您不需要设置根元素。您可以将xml作为数组参数。库将自动设置匹配的元素。如果您具有名称相同但名称空间不同的多个元素,则可以检查SoapVar。工作示例如下。

<?php
$url = 'https://www.ceramicaitalia.com/wssap/zwebservice1.wsdl';
$client = new SoapClient($url, ['trace' => true]);
$params = ['ACCION' => '/'];
$client->ZWS_WEBSERVICE1($params);
$result = $client->ZWS_WEBSERVICE1('RTA');
print_r($result);
?>