我正在尝试使用PHP Soap,但确实很挣扎。我可以通过cURL构建和发送以下内容,但不知道如何使用SoapClient构建。
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:auc="http://xxxxxxx.com/APOnline" xmlns:get="http://xxxxxxx.com/APOnline/GMData">
<soapenv:Header/>
<soapenv:Body>
<auc:GMData>
<!--Optional:-->
<auc:args>
<get:Authentication>
<auc:PartnerId>XXXXXXX</auc:PartnerId>
<auc:UserName>XXXXXXX</auc:UserName>
<auc:Password>XXXXXXX</auc:Password>
</get:Authentication>
<get:ProjectIdentification>
<!--Optional:-->
<auc:Organization></auc:Organization>
<!--Optional:-->
<auc:Project></auc:Project>
<!--Optional:-->
<auc:ProjectId>1111111</auc:ProjectId>
</get:ProjectIdentification>
<get:Timestamp>0</get:Timestamp>
</auc:args>
</auc:GMData>
</soapenv:Body>
</soapenv:Envelope>
我需要将其作为数组取回,以便可以遍历数据。关于如何使用SoapVars或仅使用复杂数组构建此库的任何帮助都可以为我节省时间。据我所知,我无法通过标头发送身份验证,因此我开始陷入困境。
最后,在我的cURL中,传递以下标头:
$headers = array(
"Content-type: text/xml;charset=\"utf-8\"",
"Accept: text/xml",
"Cache-Control: no-cache",
"Pragma: no-cache",
"SOAPAction: http://xxxxxxxx.com/APOnline/GMData",
"Content-length: ".strlen($postXML),
);
我试过了:
$soapURL = "https://xxxxxx.com/Webservices/DataExchange?wsdl" ;
$soapParameters = Array('PartnerID' => "xxxx", 'UserName' => "xxxx", 'Password' => "xxxx") ;
$soapFunction = "GMData" ;
$soapClient = new SoapClient($soapURL);
$soapResult = $soapClient->GMData($soapParameters);
var_dump($soapResult);
我得到的错误是:致命错误:致命错误:未捕获的SoapFault异常:[a:InternalServiceFault]对象引用未设置为对象的实例。在/var/www/cron-gg-update.php:35中的堆栈跟踪:#0 [内部函数]:SoapClient-> __ call('GMData ...',数组)#1 / var / www / cron-gg- update.php(35):SoapClient-> GMData(Array)#2 {main}放在第35行的/var/www/cron-gg-update.php中
有人有我可以尝试的示例代码吗?我在努力构建数组(我认为)。
终于整理出来了。我只需要继续尝试。
$soapURL = "https://xxxxx.com/Webservices/DataExchange?wsdl" ;
$sc = new SoapClient($soapURL);
$Authentication = array("PartnerId"=>"xxxx","UserName"=>"xxxx","Password"=>"xxxx");
$ProjectIdentification = array("ProjectId"=>INT);
$res = $sc->GMData(array("args"=>array("Authentication"=>$Authentication,"ProjectIdentification"=>$ProjectIdentification)));
我缺少“ args”对象。只是采用了更好的结构化数组。从PHP连接到SOAP服务器时,在此文章“对象引用未设置为对象的实例”中找到帮助
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句