Send SOAP via curl
        Posted  
        
            by danrichardson
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by danrichardson
        
        
        
        Published on 2010-06-09T14:54:51Z
        Indexed on 
            2010/06/09
            15:12 UTC
        
        
        Read the original article
        Hit count: 234
        
Hi.
This has been bugging me for days, i'm trying to send a SOAP post via curl but i just keep getting a 'couldn't connect to host' error but i really cant see how.
I have an asp version which works fine with the same url and data, i think it's just a php/curl thing...?
I currently have the following code (the CURLOPT_POSTFIELDS data is a valid soap envelope string)
    $soap_do = curl_init();
    curl_setopt($soap_do, CURLOPT_URL,            "https://xxx.yyy.com:517/zzz.asmx" );
    curl_setopt($soap_do, CURLOPT_CONNECTTIMEOUT, 10);
    curl_setopt($soap_do, CURLOPT_TIMEOUT,        10);
    curl_setopt($soap_do, CURLOPT_RETURNTRANSFER, true );
    curl_setopt($soap_do, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($soap_do, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($soap_do, CURLOPT_POST,           true );            
    curl_setopt($soap_do, CURLOPT_POSTFIELDS,     '<soap:Envelope>...</soap:Envelope>'); 
    curl_setopt($soap_do, CURLOPT_HTTPHEADER,     array('Content-Type: text/xml; charset=utf-8', 'Content-Length: '.strlen('<soap:Envelope>...</soap:Envelope>') ));
    if(curl_exec($soap_do) === false)
    {                
        $err = 'Curl error: ' . curl_error($soap_do);
        curl_close($soap_do);
        return $err;
    }
    else
    {
        curl_close($soap_do); 
        return 'Operation completed without any errors';
    }
So any ideas why it just errors all the time?
The asp version works fine! The code is;
Set xmlhttp = server.Createobject("MSXML2.ServerXMLHTTP")
  xmlhttp.Open "POST","https://xxx.yyy.com:517/zzz.asmx"
  xmlhttp.setRequestHeader "Content-Type", "text/xml; charset=utf-8"
xmlhttp.Send('<soap:Envelope>...</soap:Envelope>')
© Stack Overflow or respective owner