我正在尝试使用php向服务发送SOAP消息。
我想用fsockopen来做这件事,下面是代码:
<?php$fp = @fsockopen("ssl://xmlpropp.worldspan.com",443,$errno,$errstr);
如果(!is_resource($fp)) { die('fsockopen调用失败,返回错误号‘。$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 .=“内容类型:文本/xml;字符集=‘utf-8’\r\n”;$soap_out .=“内容长度: 999\r\n\r\n";$soap_put .=”连接:关闭\r\n“;$soap_out .= "SOAPAction:\r\n";$soap_out .=‘Worldspan This is a test ';
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";上面的代码挂起了。如果我删除while它输入ok,那么我认为问题出在$soap_in .= fgets($fp,100)
对正在发生的事情有什么想法吗
发布于 2010-04-22 20:41:36
这不仅仅是打开一个套接字然后写“POST...”的问题。你需要一个完整的HTTP堆栈来解析可能的响应(例如,什么不同的编码?部分内容?)。使用cURL。
它目前失败的原因可能是因为远程系统被配置为使用keepalives -这也可以通过使用适当的HTTP堆栈来解决。
结果表明,C.
发布于 2010-04-22 15:49:22
我建议对soap操作使用curl。http://www.zimbra.com/forums/developers/9890-solved-simple-soap-admin-example-php.html#post52586
https://stackoverflow.com/questions/2688849
复制相似问题