Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php fsockopensoap请求_Php_Sockets_Soap_Fgets - Fatal编程技术网

Php fsockopensoap请求

Php fsockopensoap请求,php,sockets,soap,fgets,Php,Sockets,Soap,Fgets,我正在尝试使用php向服务发送SOAP消息。 我想用fsockopen来做,下面是代码: <?php $fp=@fsockopenssl://xmlpropp.worldspan.com,443,$errno,$errstr 如果!资源是$fp吗{ die'fsockopen调用失败,错误号为“$errno”。$errstr; } $soap\u out=POST/xmlts HTTP/1.1\r\n; $soap_out.=主机:212.127.18.11:8800\r\n; //$s

我正在尝试使用php向服务发送SOAP消息。 我想用fsockopen来做,下面是代码:

<?php
$fp=@fsockopenssl://xmlpropp.worldspan.com,443,$errno,$errstr

如果!资源是$fp吗{ die'fsockopen调用失败,错误号为“$errno”。$errstr; }

$soap\u out=POST/xmlts HTTP/1.1\r\n; $soap_out.=主机:212.127.18.11:8800\r\n; //$soap\u out.=用户代理:MySOAPisOKGuys\r\n; $soap_out.=内容类型:text/xml;charset='utf-8'\r\n; $soap\u out.=内容长度:999\r\n\r\n; $soap\u put.=连接:关闭\r\n; $soap\u out.=SOAPAction:\r\n; $soap_out.=' 世界范围 这是一个测试 ';

上面的代码只是挂起。如果我删除while,它的类型是ok,那么我假设问题出在$soap_in.=fgets$fp,100


任何关于正在发生的事情的想法,我建议使用curl进行soap操作

这不仅仅是打开套接字然后向其写入“POST…”的问题-您需要一个完整的HTTP堆栈来解析可能的响应,例如,什么不同的编码?部分内容?。使用卷曲

其当前失败的原因可能是远程系统配置为使用keepalives,这也可以通过使用适当的HTTP堆栈来解决


C.

在服务器中未安装php curl扩展,因此无法安装它。我怎样才能打开FSock。上面的代码似乎是正确的。
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";