首页 > 解决方案 > SOAP-ERROR:编码:对象没有“ACCION”属性

问题描述

我有一个 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>

标签: php

解决方案


您不需要设置根元素。您可以将 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);
?>

推荐阅读