如何通过 Curl 和 PHP 发送 SOAP XML? [英] How can I send SOAP XML via Curl and PHP?
问题描述
这已经困扰我好几天了;我正在尝试通过 Curl 发送 SOAP 帖子,但我一直收到无法连接到主机"的错误消息,但是,我真的不知道怎么做.
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 can't see how.
我有一个 ASP 版本,它可以很好地处理相同的 URL 和数据.我认为这只是 PHP/Curl 的事情.
I have an ASP version which works fine with the same URL and data. I think it's just a PHP/Curl thing.
我目前有以下代码(CURLOPT_POSTFIELDS
数据是有效的 SOAP 信封字符串):
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?
ASP 版本工作正常!代码是:
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>')
推荐答案
谢谢很多朋友,你的代码对我有用.
Thanx a lot buddy, your code has worked for me.
代码如下:
$soap_do = curl_init();
curl_setopt($soap_do, CURLOPT_URL, $url );
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, $post_string);
curl_setopt($soap_do, CURLOPT_HTTPHEADER, array('Content-Type: text/xml; charset=utf-8', 'Content-Length: '.strlen($post_string) ));
curl_setopt($soap_do, CURLOPT_USERPWD, $user . ":" . $password);
$result = curl_exec($soap_do);
$err = curl_error($soap_do);
这篇关于如何通过 Curl 和 PHP 发送 SOAP XML?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!