0

次のようなサンプルリクエストを使用して、PHPからSOAPWebサービスへのWebサービス呼び出しを行おうとしています。

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.somedomain.com/">
   <soapenv:Header/>
   <soapenv:Body>
      <ws:SearchMarketplaceSku>
         <ws:Request>
             <ws:Security>
               <ws:PartnerKey>[suppressed]</ws:PartnerKey>
               <ws:Password>[suppressed]</ws:Password>
            </ws:Security>
            <ws:AvailableOnDate>2012-04-03T00:00:00</ws:AvailableOnDate>
            <ws:IncludeStateDetails>true</ws:IncludeStateDetails>
            <ws:State>CA</ws:State>
         </ws:Request>
      </ws:SearchMarketplaceSku>
   </soapenv:Body>
</soapenv:Envelope>

使用されているPHPコードは次のとおりです。

$soapClient = new SoapClient($wsdlUrl);   
$ap_param = array('PartnerKey'    =>    $PartnerKey, 'Password'    =>    $metapackPassword, 'AvailableOnDate' => '2012-04-03T00:00:00','IncludeStateDetails'=>true, 'State'=>'CA');
$info = $soapClient->__call("SearchMarketplaceSku", $ap_param);

Webサービス呼び出しの結果、「要求が正しく指定されていません。サーバーは要求を逆シリアル化できません」というエラーが発生しますか?何が問題ですか?$ ap_param配列には、XMLに対応するすべてのネストされたノードを含める必要がありますか?「WSDL」モードを使用してこの呼び出しを行う簡単な方法はありますか?

ご協力いただきありがとうございます

4

1 に答える 1

2

PartnerKeyとPasswordは、セキュリティキーの下の配列に含まれている必要があります。

$ap_param = array(
'Security' => array(
    'PartnerKey'    =>    $PartnerKey,
    'Password'    =>    $metapackPassword
),
'AvailableOnDate' => '2012-04-03T00:00:00',
'IncludeStateDetails'=>true, 'State'=>'CA'
);
于 2012-04-04T20:52:04.690 に答える