2016-05-23 38 views
0

我有一個調用php SoapClient的合作伙伴soap服務的問題。他的WSDL是https://motrada.net/accounts/test.wsdlPhp SoapClient Soap-Env有'item'和'key'節點

當我下面的數據發送到PHP SoapClient的

array (
    'Expert_Status' => 
    array (
    'ChassisNo' => '9998886NZ12345678', 
    'MotradaIntVehicleNo' => '757169', 
    'MotradaSalesId' => '209448', 
    'MotradaWorkflowStatus' => '5-offer_preperation', 
    'GrossPriceInclVATAutoi' => '20000', 
    'DamageAmountInclVAT' => '1000', 
    'MileageExpertise' => '234234', 
    'Timestamp' => '2016-05-23T10:14:58+02:00', 
), 
) 

的PHP的SoapClient的發送以下請求:

<?xml version="1.0" encoding="UTF-8"?> 
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> 
    <SOAP-ENV:Body> 
     <Expert-Request> 
      <item> 
       <key>Expert_Status</key> 
       <value> 
        <item> 
         <key>ChassisNo</key> 
         <value>9998886NZ12345678</value> 
        </item> 
        <item> 
         <key>MotradaIntVehicleNo</key> 
         <value>757169</value> 
        </item> 
        ... 
       </value> 
      </item> 
     </Expert-Request> 
    </SOAP-ENV:Body> 
</SOAP-ENV:Envelope> 

請求看起來應該是這樣

<?xml version="1.0" encoding="UTF-8"?> 
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> 
    <SOAP-ENV:Body> 
     <Expert_Status> 
      <ChassisNo>9998886NZ12345678</ChassisNo> 
      <MotradaIntVehicleNo>757169</MotradaIntVehicleNo> 
      ... 

我發送給php SoapClient的選項有:

array (
    'encoding' => 'UTF-8', 
    'verifypeer' => false, 
    'verifyhost' => false, 
    'soap_version' => 'SOAP_1_1', 
    'trace' => true, 
    'exceptions' => true, 
    'connection_timeout' => 10, 
    'login' => 'MOTR_ALE', 
    'password' => 'XXXXXXXX', 
) 

任何人都可以幫助我找到問題所在?

回答

1

有在給定的WSDL文件仔細看,它說:

<wsdl:message name="xmln.Bestand-Request"> 
    <wsdl:documentation/> 
    <wsdl:part xmlns="" name="Bestand-Request" element="Bestand-Request"/> 
</wsdl:message> 
<wsdl:message name="xmln.Bestand-Response"> 
    <wsdl:documentation/> 
    <wsdl:part xmlns="" name="Bestand-Response" element="Bestand-Response"/> 
</wsdl:message> 
<wsdl:message name="xmln.Expert-Request"> 
    <wsdl:part name="Expert-Request" element="Expert-Request"/> 
</wsdl:message> 
<wsdl:message name="xmln.Expert-Response"> 
    <wsdl:part name="Expert-Response" element="Expert-Response"/> 
</wsdl:message> 

你看到區別?在前兩個部分定義中,有一個空屬性「xmlns」,在其他部分定義中缺失。 通過這個屬性擴展這些部分,你應該很好去;)