PHP & XML - How to generate a soap request in PHP from this XML?

前端 未结 2 1312
旧时难觅i
旧时难觅i 2020-12-31 23:46

I am completly new to SOAP operations.

I have been provided with an XML document (SOAP) to get some collection points for a shipping method.

From the manual

相关标签:
2条回答
  • 2021-01-01 00:01

    following example might help you.

    SOAP XML schema

    <x:Envelope xmlns:x="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://www.dataaccess.com/webservicesserver/">
            <x:Header/>
            <x:Body>
                <web:NumberToDollars>
                    <web:dNum>10</web:dNum>
                </web:NumberToDollars>
            </x:Body>
        </x:Envelope>
    

    PHP code

      $wsdl = 'http://www.dataaccess.com/webservicesserver/numberconversion.wso?WSDL';
    
    
        try{
            $clinet=new SoapClient($wsdl);
    
            $ver =array("dNum"=>"2002");
            $quates=$clinet->NumberToDollars($ver);
    
            var_dump($quates);
    
    
        }
    
        catch(SoapFault $e)
        {
            echo $e->getMessage();
        }
    
    0 讨论(0)
  • 2021-01-01 00:06

    If anyone should be interested, i have provided the correct answer:

    $soapUrl = "http://privpakservices.schenker.nu/package/package_1.3/packageservices.asmx?op=SearchCollectionPoint";
    
    $xml_post_string = '<?xml version="1.0" encoding="utf-8"?><soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"><soap12:Body><SearchCollectionPoint xmlns="http://privpakservices.schenker.nu/"><customerID>XXX</customerID><key>XXXXXX-XXXXXX</key><serviceID></serviceID><paramID>0</paramID><address>RiksvŠgen 5</address><postcode>59018</postcode><city>Mantorp</city><maxhits>10</maxhits></SearchCollectionPoint></soap12:Body></soap12:Envelope>';
    
    $headers = array(
    "POST /package/package_1.3/packageservices.asmx HTTP/1.1",
    "Host: privpakservices.schenker.nu",
    "Content-Type: application/soap+xml; charset=utf-8",
    "Content-Length: ".strlen($xml_post_string)
    ); 
    
    $url = $soapUrl;
    
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $xml_post_string);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    
    $response = curl_exec($ch); 
    curl_close($ch);
    
    $response1 = str_replace("<soap:Body>","",$response);
    $response2 = str_replace("</soap:Body>","",$response1);
    
    $parser = simplexml_load_string($response2);
    
    0 讨论(0)
提交回复
热议问题