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] オブジェクト参照がオブジェクトのインスタンスに設定されていません。in /var/www/cron-gg-update.php:35 スタックトレース: #0 [内部関数]: SoapClient->__call('GMData...', Array) #1 /var/www/cron-gg- update.php(35): SoapClient->GMData(Array) #2 {main} が 35 行目の /var/www/cron-gg-update.php でスローされました
私が試すことができるサンプルコードを持っている人はいますか? 配列の構築方法に苦労しています(と思います)。