Esto me ha estado molestando por días; Intento enviar una publicación de SOAP a través de Curl, pero sigo recibiendo el error "No se pudo conectar con el host", pero realmente no veo cómo.¿Cómo puedo enviar SOAP XML a través de Curl y PHP?
Tengo una versión ASP que funciona bien con la misma URL y datos. Creo que es solo una cosa PHP/Curl.
que actualmente tiene el siguiente código (los datos CURLOPT_POSTFIELDS
es una cadena válida sobre SOAP):
$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';
}
Así que cualquier idea por qué sólo errores todo el tiempo?
¡La versión ASP funciona bien! El código es:
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>')
Nunca obtuve una respuesta que funcionó para mí, y esto fue hace más de 2 años. La gente parece encontrar útil esta respuesta, así que la marcaré como la respuesta. Gracias. –
¿Alguien puede ayudarme con el vicio? al revés de esto es decir ¿Activar la solicitud curl como arriba para una solicitud soapclient? – mahen3d