2012-04-04 67 views
0

我试图让从PHP Web服务调用与样品请求SOAP的Web服务,它看起来是这样的:如何将SOAP Web服务调用到.NET 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); 

该网站服务调用导致“请求未被正确指定;服务器无法反序列化请求”错误?问题是什么? $ ap_param数组是否需要包含与XML相关的所有嵌套节点?有没有更简单的方法使用“WSDL”模式进行此调用?

感谢您的帮助

回答

2

PartnerKey和密码必须是一个阵列中的关键安全下:

$ap_param = array(
'Security' => array(
    'PartnerKey' => $PartnerKey, 
    'Password' => $metapackPassword 
), 
'AvailableOnDate' => '2012-04-03T00:00:00', 
'IncludeStateDetails'=>true, 'State'=>'CA' 
);