问题
I am trying to integrate Shipment creation API from postaplus. They have a SOAP API which requires XML body as given below.
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns1="http://schemas.datacontract.org/2004/07/PostaWebClient"
xmlns:ns2="http://tempuri.org/" name="Shipment_Creation">
<SOAP-ENV:Body>
<ns2:Shipment_Creation>
<ns2:SHIPINFO>
<ns1:ClientInfo>
<ns1:CodeStation>String</ns1:CodeStation>
<ns1:Password>String</ns1:Password>
<ns1:ShipperAccount>String</ns1:ShipperAccount>
<ns1:UserName>String</ns1:UserName>
</ns1:ClientInfo>
<ns1:CodeCurrency>AED</ns1:CodeCurrency>
<!--Domestic Standard-->
<ns1:CodeService>SRV6</ns1:CodeService>
<!--NON doc-->
<ns1:CodeShippmentType>SHPT2</ns1:CodeShippmentType>
<ns1:ConnoteContact>
<ns1:Email1>tString</ns1:Email1>
<ns1:Email2>String</ns1:Email2>
<ns1:TelHome>String</ns1:TelHome>
<ns1:TelMobile>String</ns1:TelMobile>
</ns1:ConnoteContact>
<ns1:ConnoteDescription>Wooden Items</ns1:ConnoteDescription>
<ns1:ConnoteInsured>N</ns1:ConnoteInsured>
<ns1:ConnotePerformaInvoice>
<ns1:CONNOTEPERMINV>
<ns1:CodeHS>6105200000</ns1:CodeHS>
<ns1:CodePackageType>2 PCKT2 BOX</ns1:CodePackageType>
<ns1:Description>Wooden</ns1:Description>
<ns1:OrginCountry>KWT</ns1:OrginCountry>
<ns1:Quantity>1</ns1:Quantity>
<ns1:RateUnit>200</ns1:RateUnit>
</ns1:CONNOTEPERMINV>
</ns1:ConnotePerformaInvoice>
<ns1:ConnotePieces>1</ns1:ConnotePieces>
<ns1:ConnoteProhibited>N</ns1:ConnoteProhibited>
<ns1:ConnoteRef>
<ns1:Reference1>123</ns1:Reference1>
<ns1:Reference2>123</ns1:Reference2>
</ns1:ConnoteRef>
<ns1:Consignee>
<ns1:Company>String</ns1:Company>
<ns1:FromAddress>1String</ns1:FromAddress>
<ns1:FromArea>NA</ns1:FromArea>
<ns1:FromCity>NA</ns1:FromCity>
<ns1:FromCodeCountry>NA</ns1:FromCodeCountry>
<ns1:FromMobile>0987654321</ns1:FromMobile>
<ns1:FromName>TUshar</ns1:FromName>
<ns1:FromPinCode>302003</ns1:FromPinCode>
<ns1:FromProvince>NA</ns1:FromProvince>
<ns1:FromTelphone>000000</ns1:FromTelphone>
<ns1:Remarks>Test remarks</ns1:Remarks>
<ns1:ToAddress>123,Test City, Test Province, Test PIN</ns1:ToAddress>
<ns1:ToArea>NA</ns1:ToArea>
<ns1:ToCity>NA</ns1:ToCity>
<ns1:ToCodeCountry>NA</ns1:ToCodeCountry>
<ns1:ToCodeSector>NA</ns1:ToCodeSector>
<ns1:ToDesignation>NA</ns1:ToDesignation>
<ns1:ToMobile>00000000</ns1:ToMobile>
<ns1:ToName>NAME_HERE</ns1:ToName>
<ns1:ToPinCode>302003</ns1:ToPinCode>
<ns1:ToProvince>NA</ns1:ToProvince>
<ns1:ToTelPhone>00000000</ns1:ToTelPhone>
</ns1:Consignee>
<!-- total value, incluign shipping -->
<ns1:CostShipment>10</ns1:CostShipment>
<ns1:ItemDetails>
<!-- ITEMDETAILS element can be repeated more than one -->
<ns1:ITEMDETAILS>
<ns1:ConnoteHeight>0</ns1:ConnoteHeight>
<ns1:ConnoteLength>0</ns1:ConnoteLength>
<ns1:ConnoteWeight>0.5</ns1:ConnoteWeight>
<ns1:ConnoteWidth>1</ns1:ConnoteWidth>
<ns1:ScaleWeight>0</ns1:ScaleWeight>
</ns1:ITEMDETAILS>
</ns1:ItemDetails>
</ns2:SHIPINFO>
</ns2:Shipment_Creation>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
I have created an array of the body and sent it to the URL but only error shows up
Here is my code
<?php
$param1=array (
'name' => 'Shipment_Creation',
'value' => '',
'attr' =>
array (
),
'children' =>
array (
0 =>
array (
'name' => 'SHIPINFO',
'value' => '',
'attr' =>
array (
),
'children' =>
array (
0 =>
array (
'name' => 'ClientInfo',
'value' => '',
'attr' =>
array (
),
'children' =>
array (
0 =>
array (
'name' => 'CodeStation',
'value' => 'String',
'attr' =>
array (
),
'children' =>
array (
),
),
1 =>
array (
'name' => 'Password',
'value' => 'String',
'attr' =>
array (
),
'children' =>
array (
),
),
2 =>
array (
'name' => 'ShipperAccount',
'value' => 'String',
'attr' =>
array (
),
'children' =>
array (
),
),
3 =>
array (
'name' => 'UserName',
'value' => 'String',
'attr' =>
array (
),
'children' =>
array (
),
),
),
),
1 =>
array (
'name' => 'CodeCurrency',
'value' => 'AED',
'attr' =>
array (
),
'children' =>
array (
),
),
2 =>
array (
'name' => 'CodeService',
'value' => 'SRV6',
'attr' =>
array (
),
'children' =>
array (
),
),
3 =>
array (
'name' => 'CodeShippmentType',
'value' => 'SHPT2',
'attr' =>
array (
),
'children' =>
array (
),
),
4 =>
array (
'name' => 'ConnoteContact',
'value' => '',
'attr' =>
array (
),
'children' =>
array (
0 =>
array (
'name' => 'Email1',
'value' => 'String',
'attr' =>
array (
),
'children' =>
array (
),
),
1 =>
array (
'name' => 'Email2',
'value' => 'String',
'attr' =>
array (
),
'children' =>
array (
),
),
2 =>
array (
'name' => 'TelHome',
'value' => 'String',
'attr' =>
array (
),
'children' =>
array (
),
),
3 =>
array (
'name' => 'TelMobile',
'value' => 'String',
'attr' =>
array (
),
'children' =>
array (
),
),
),
),
5 =>
array (
'name' => 'ConnoteDescription',
'value' => 'Wooden Items',
'attr' =>
array (
),
'children' =>
array (
),
),
6 =>
array (
'name' => 'ConnoteInsured',
'value' => 'N',
'attr' =>
array (
),
'children' =>
array (
),
),
7 =>
array (
'name' => 'ConnotePerformaInvoice',
'value' => '',
'attr' =>
array (
),
'children' =>
array (
0 =>
array (
'name' => 'CONNOTEPERMINV',
'value' => '',
'attr' =>
array (
),
'children' =>
array (
0 =>
array (
'name' => 'CodeHS',
'value' => '6105200000',
'attr' =>
array (
),
'children' =>
array (
),
),
1 =>
array (
'name' => 'CodePackageType',
'value' => '2 PCKT2 BOX',
'attr' =>
array (
),
'children' =>
array (
),
),
2 =>
array (
'name' => 'Description',
'value' => 'Wooden',
'attr' =>
array (
),
'children' =>
array (
),
),
3 =>
array (
'name' => 'OrginCountry',
'value' => 'KWT',
'attr' =>
array (
),
'children' =>
array (
),
),
4 =>
array (
'name' => 'Quantity',
'value' => '1',
'attr' =>
array (
),
'children' =>
array (
),
),
5 =>
array (
'name' => 'RateUnit',
'value' => '200',
'attr' =>
array (
),
'children' =>
array (
),
),
),
),
),
),
8 =>
array (
'name' => 'ConnotePieces',
'value' => '1',
'attr' =>
array (
),
'children' =>
array (
),
),
9 =>
array (
'name' => 'ConnoteProhibited',
'value' => 'N',
'attr' =>
array (
),
'children' =>
array (
),
),
10 =>
array (
'name' => 'ConnoteRef',
'value' => '',
'attr' =>
array (
),
'children' =>
array (
0 =>
array (
'name' => 'Reference1',
'value' => '123',
'attr' =>
array (
),
'children' =>
array (
),
),
1 =>
array (
'name' => 'Reference2',
'value' => '123',
'attr' =>
array (
),
'children' =>
array (
),
),
),
),
11 =>
array (
'name' => 'Consignee',
'value' => '',
'attr' =>
array (
),
'children' =>
array (
0 =>
array (
'name' => 'Company',
'value' => 'String',
'attr' =>
array (
),
'children' =>
array (
),
),
1 =>
array (
'name' => 'FromAddress',
'value' => '1719, Jaipur',
'attr' =>
array (
),
'children' =>
array (
),
),
2 =>
array (
'name' => 'FromArea',
'value' => 'NA',
'attr' =>
array (
),
'children' =>
array (
),
),
3 =>
array (
'name' => 'FromCity',
'value' => 'NA',
'attr' =>
array (
),
'children' =>
array (
),
),
4 =>
array (
'name' => 'FromCodeCountry',
'value' => 'NA',
'attr' =>
array (
),
'children' =>
array (
),
),
5 =>
array (
'name' => 'FromMobile',
'value' => '0987654321',
'attr' =>
array (
),
'children' =>
array (
),
),
6 =>
array (
'name' => 'FromName',
'value' => 'TUshar',
'attr' =>
array (
),
'children' =>
array (
),
),
7 =>
array (
'name' => 'FromPinCode',
'value' => '302003',
'attr' =>
array (
),
'children' =>
array (
),
),
8 =>
array (
'name' => 'FromProvince',
'value' => 'NA',
'attr' =>
array (
),
'children' =>
array (
),
),
9 =>
array (
'name' => 'FromTelphone',
'value' => '000000',
'attr' =>
array (
),
'children' =>
array (
),
),
10 =>
array (
'name' => 'Remarks',
'value' => 'Test remarks',
'attr' =>
array (
),
'children' =>
array (
),
),
11 =>
array (
'name' => 'ToAddress',
'value' => '123,Test City, Test Province, Test PIN',
'attr' =>
array (
),
'children' =>
array (
),
),
12 =>
array (
'name' => 'ToArea',
'value' => 'NA',
'attr' =>
array (
),
'children' =>
array (
),
),
13 =>
array (
'name' => 'ToCity',
'value' => 'NA',
'attr' =>
array (
),
'children' =>
array (
),
),
14 =>
array (
'name' => 'ToCodeCountry',
'value' => 'NA',
'attr' =>
array (
),
'children' =>
array (
),
),
15 =>
array (
'name' => 'ToCodeSector',
'value' => 'NA',
'attr' =>
array (
),
'children' =>
array (
),
),
16 =>
array (
'name' => 'ToDesignation',
'value' => 'NA',
'attr' =>
array (
),
'children' =>
array (
),
),
17 =>
array (
'name' => 'ToMobile',
'value' => '00000000',
'attr' =>
array (
),
'children' =>
array (
),
),
18 =>
array (
'name' => 'ToName',
'value' => 'NAME_HERE',
'attr' =>
array (
),
'children' =>
array (
),
),
19 =>
array (
'name' => 'ToPinCode',
'value' => '302003',
'attr' =>
array (
),
'children' =>
array (
),
),
20 =>
array (
'name' => 'ToProvince',
'value' => 'NA',
'attr' =>
array (
),
'children' =>
array (
),
),
21 =>
array (
'name' => 'ToTelPhone',
'value' => '00000000',
'attr' =>
array (
),
'children' =>
array (
),
),
),
),
12 =>
array (
'name' => 'CostShipment',
'value' => '10',
'attr' =>
array (
),
'children' =>
array (
),
),
13 =>
array (
'name' => 'ItemDetails',
'value' => '',
'attr' =>
array (
),
'children' =>
array (
0 =>
array (
'name' => 'ITEMDETAILS',
'value' => '',
'attr' =>
array (
),
'children' =>
array (
0 =>
array (
'name' => 'ConnoteHeight',
'value' => '0',
'attr' =>
array (
),
'children' =>
array (
),
),
1 =>
array (
'name' => 'ConnoteLength',
'value' => '0',
'attr' =>
array (
),
'children' =>
array (
),
),
2 =>
array (
'name' => 'ConnoteWeight',
'value' => '0.5',
'attr' =>
array (
),
'children' =>
array (
),
),
3 =>
array (
'name' => 'ConnoteWidth',
'value' => '1',
'attr' =>
array (
),
'children' =>
array (
),
),
4 =>
array (
'name' => 'ScaleWeight',
'value' => '0',
'attr' =>
array (
),
'children' =>
array (
),
),
),
),
),
),
),
),
),
);
$soapClient=new SoapClient("https://staging.postaplus.net/APIService/PostaWebClient.svc?wsdl");
$response=$soapClient->__SoapCall("Shipment_Creation", $param1);
var_dump($response);
}
catch(Exception $e){
echo 'IN Exception <br><br>';
echo $e->getMessage();
}
?>
Error I am getting:
"The formatter threw an exception while trying to deserialize the message: Error in deserializing body of request message for operation 'Shipment_Creation'. End element 'Body' from namespace 'http://schemas.xmlsoap.org/soap/envelope/' expected. Found element 'param1' from namespace ''. Line 2, position 246.
来源:https://stackoverflow.com/questions/59292326/soap-post-request-with-namespaces-php