php - 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>
解决方案
您不需要设置根元素。您可以将 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);
?>
推荐阅读
- java - 使用 OpenCV 进行人脸和眼睛检测无法正常工作
- google-apps-script - 有没有办法获取谷歌文档的查看活动?
- sql-server - Apache NiFi 无法加载数据库驱动程序 SQL Server
- sctp - SCTP Protocol (Networking)
- javascript - 如何使用 JavaScript 获取当前登录的用户 ID
- javascript - 在 React Native 中获取“undefined is not and object”
- sql - 在 Big Query 中按“不为空”过滤“Where In”查询
- amazon-web-services - Anzograph 从 S3 存储桶加载数据
- django - /music/4/music_create/ NOT NULL 约束处的 IntegrityError 失败:music_artist.as_pro_id
- r - 如何将NCBI数据库中的条目输出到R中的表中