SOAP Post request with namespaces PHP

爷,独闯天下 提交于 2020-01-16 09:29:26

问题


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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!