繁体   English   中英

在PHP中从cURL Soap迁移到Soap Client

[英]Moving from cURL Soap to Soap Client in PHP

我正在尝试使用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服务器时,在此文章“对象引用未设置为对象的实例”中找到帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM