Как я могу отправить SOAP XML через Завихрение и PHP?

Это прослушивало меня в течение многих дней; я пытаюсь отправить сообщение SOAP через Завихрение, но я просто продолжаю добираться, "не мог подключить к хосту" ошибку, но, я действительно не вижу как.

У меня есть версия ASP, которая хорошо работает с тем же URL и данными. Я думаю, что это - просто вещь PHP/Curl.

У меня в настоящее время есть следующий код ( CURLOPT_POSTFIELDS данные являются допустимой строкой конверта 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';
}

Так какие-либо идеи, почему это просто ошибки все время?

Версия ASP хорошо работает! Код:

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>')
34
задан the Tin Man 14 May 2012 в 18:45
поделиться

2 ответа

Попробуйте установить номер порта с помощью CURLOPT_PORT, возможно, ему не нравится, что он является частью URL.

2
ответ дан 27 November 2019 в 16:52
поделиться

Мне пришлось использовать

$headers = array(             
    "Content-type: text/xml;charset=\"utf-8\"", 
    "Accept: text/xml", 
    "Cache-Control: no-cache", 
    "Pragma: no-cache", 
    "SOAPAction: \"run\"", 
    "Content-length: ".strlen($xml),
); 

и

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
11
ответ дан 27 November 2019 в 16:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: