fsockopen soap请求
我想发送一个SOAP消息给使用php的服务。
我想的fsockopen做到这一点,这里的是代码:fsockopen soap请求
<?php
$计划生育= @fsockopen( “SSL://xmlpropp.worldspan.com”,443,$的errno,$ errstr);如果(!is_resource($ fp)){ die('fsockopen call failed with error number'。$ errno。'。'。$ errstr); }
$ soap_out =“POST/xmlts HTTP/1.1 \ r \ n”; $ soap_out。=“主机:212.127.18.11:8800 \ r \ n”; // $ soap_out。=“用户代理:MySOAPisOKGuys \ r \ n”; $ soap_out。=“Content-Type:text/xml; charset ='utf-8'\ r \ n”; $ soap_out。=“内容长度:999 \ r \ n \ r \ n”; $ soap_put。=“连接:关闭\ r \ n”; $ soap_out。=“SOAPAction:\ r \ n”; 。 $ soap_out = ' Worldspan的 这是一个测试 ';
if(!fputs($fp, $soap_out, strlen($soap_out)))
echo "could not write";
echo "<xmp>".$soap_out."</xmp>";
echo "--------------------<br>";
while (!feof($fp))
{
$soap_in .= fgets($fp, 100);
}
echo "<xmp>$soap_in</xmp>";
fclose($fp);
echo "ok";
上面的代码只是挂起。如果我删除了,而这类型的好,所以我想这个问题是在$ soap_in。=与fgets($ fp的,100)
发生了什么
它不仅仅是打开一个套接字然后写'POST ....' - 你需要一个完整的HTTP栈来解析可能的响应(例如什么不同的编码?部分内容?)。使用cURL。
其当前失败的原因可能是因为远程系统配置为使用keepalive--这将再次通过使用适当的HTTP堆栈来解决。
C.
在服务器中它没有安装php curl扩展名,并且不可能安装它。我怎么能用fsockopen()来做到这一点。上面的代码似乎是正确的。 – gosom 2010-04-22 11:54:57