Vax
Новичок
Впервые работаю с SOAP, и уже почти 8 часов пытаюсь наладить сервис: никак не могу передать параметры. Я уже пробовал и массивом, и классами - результат всегда один - SoapFault. Помогите, пожалуйста, разобраться в чём проблема.
Код:
В результате формируется такой XML-документ:
Из последнего листинга видно, что почему-то не передался параметр Sender. Более того, XML-документ сильно отличается от примера, предложенного в документации:
Код:
PHP:
$Sender = new stdClass();
$Sender->senderPostalCode = '97000';
$Sender->senderCountryCode = 'MX';
$Sender->senderCityName = 'MERIDA';
$Receiver = new stdClass();
$Receiver->receiverPostalCode = '96536';
$Receiver->receiverCountryCode = 'MX';
$Receiver->receiverCityName = 'COATZACOALCOS';
$ShipmentDetails = new stdClass();
$ShipmentDetails->calculateTransitTime = 'false';
$ShipmentDetails->checkCutOffTime = 'false';
$ShipmentDetails->shipmentWeight = '1';
$client = new SoapClient('http://201.175.39.6/Coverage/Webservices/Coverage?wsdl', array('trace' => 1, 'exceptions' => 0));
$result = $client->getCoverage( $Sender, $Receiver, $ShipmentDetails);
PHP:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns1="http://service.coverage.dhl.com.mx">
<SOAP-ENV:Body>
<ns1:getCoverage>
<ns1:in0 xsi:nil="true"/>
<ns1:in1 xsi:nil="true"/>
<ns1:in2 xsi:nil="true"/>
</ns1:getCoverage>
<param1>
<receiverPostalCode>96536</receiverPostalCode>
<receiverCountryCode>MX</receiverCountryCode>
<receiverCityName>COATZACOALCOS</receiverCityName>
</param1>
<param2>
<calculateTransitTime>false</calculateTransitTime>
<checkCutOffTime>false</checkCutOffTime>
<shipmentWeight>1</shipmentWeight>
</param2>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
PHP:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://service.coverage.dhl.com.mx" xmlns:mod="http://model.coveragemanifest.dhl.com.mx">
<soapenv:Header/>
<soapenv:Body>
<ser:getCoverage>
<ser:in0>
<!--Optional:-->
<mod:senderCountryCode>MX</mod:senderCountryCode>
<!--Optional:-->
<mod:senderCityName>MERIDA</mod:senderCityName>
<!--Optional:-->
<mod:senderIATA></mod:senderIATA>
<!--Optional:-->
<mod:senderSubIATA></mod:senderSubIATA>
<!--Optional:-->
<mod:senderPostalCode>97000</mod:senderPostalCode>
<!--Optional:-->
<mod:senderSuburbType></mod:senderSuburbType>
</ser:in0>
<ser:in1>
<!--Optional:-->
<mod:receiverSubIATA></mod:receiverSubIATA>
<!--Optional:-->
<mod:receiverPostalCode>96536</mod:receiverPostalCode>
<!--Optional:-->
<mod:receiverCountryCode>MX</mod:receiverCountryCode>
<!--Optional:-->
<mod:receiverIATA></mod:receiverIATA>
<!--Optional:-->
<mod:receiverSuburbType></mod:receiverSuburbType>
<!--Optional:-->
<mod:receiverCityName>COATZACOALCOS</mod:receiverCityName>
</ser:in1>
<ser:in2>
<!--Optional:-->
<mod:calculateTransitTime>true</mod:calculateTransitTime>
<!--Optional:-->
<mod:checkCutOffTime>true</mod:checkCutOffTime>
<!--Optional:-->
<mod:shipmentWeight>1</mod:shipmentWeight>
<!--Optional:-->
<mod:pieceDetails>
</mod:pieceDetails>
<!--Optional:-->
<mod:accountNumber></mod:accountNumber>
<!--Optional:-->
<mod:shipmentWeightUnit></mod:shipmentWeightUnit>
</ser:in2>
</ser:getCoverage>
</soapenv:Body>
</soapenv:Envelope>