Execute SOAP using cURL

后端 未结 1 1194
野趣味
野趣味 2020-12-16 08:04

I am trying to execute an SOAP-function using cURL (because I get an error using the SoapClient().

This is my code (that is halfway working)

$credent         


        
相关标签:
1条回答
  • 2020-12-16 08:18

    You need to specify the cURL options to POST, and set the body of the request - if your not sending a body, there's no point in a POST request (and more importantly, it isn't SOAP). Building a complete HTTP request header just won't cut it.

    $credentials = "username:pass"; 
    $url = "https://url/folder/sample.wsdl";
    $body = ''; /// Your SOAP XML needs to be in this variable
    
    $headers = array( 
        'Content-Type: text/xml; charset="utf-8"', 
        'Content-Length: '.strlen($body), 
        'Accept: text/xml', 
        'Cache-Control: no-cache', 
        'Pragma: no-cache', 
        'SOAPAction: "customerSearch"'
    ); 
    
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 60); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_USERAGENT, $defined_vars['HTTP_USER_AGENT']);
    
    // Stuff I have added
    curl_setopt($ch, CURLOPT_POST, true); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $body); 
    curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
    curl_setopt($ch, CURLOPT_USERPWD, $credentials);
    
    $data = curl_exec($ch); 
    
    0 讨论(0)
提交回复
热议问题