PHP实现Soap通讯的方法
发布时间:2020-12-13 02:07:30 所属栏目:PHP教程 来源:网络整理
导读:《PHP实战:PHP实现Soap通讯的方法》要点: 本文介绍了PHP实战:PHP实现Soap通讯的方法,希望对您有用。如果有疑问,可以联系我们。 本篇章节讲解PHP实现Soap通讯的办法.供大家参考研究.具体实现办法如下: 代码如下: ?php function HttpSoap($serve
《PHP实战:PHP实现Soap通讯的方法》要点: 本篇章节讲解PHP实现Soap通讯的办法.分享给大家供大家参考.具体实现办法如下:
代码如下:
<?php
function HttpSoap($server,$port,$url,$namespace,$action,$data) { $fp = @fsockopen($server,$port); if (!$fp) { return FALSE; } else { $soapData = ConstructData($namespace,$data); $length = strlen($soapData); $out = "POST $url HTTP/1.1rn"; $out .= "Host: $serverrn"; $out .= "Content-Type: text/xml; charset=utf-8rn"; $out .= "Content-Length: $lengthrn"; $out .= "SOAPAction: "$namespace$action"rnrn"; $out .= $soapData; $out .= "rnrn"; fputs($fp,$out); stream_set_timeout($fp,2); $header = ""; while($line = trim(fgets($fp))) { $header .= $line."n"; } $dataPos = strpos($header,"Content-Length: ") + 16; $dataEnd = strpos($header,"n",$dataPos); $dataLength = substr($header,$dataPos,$dataEnd - $dataPos); $data = ""; if($dataLength > 0) { $data = fread($fp,$dataLength); } fclose($fp); if(strlen($data) != $dataLength || $dataLength <= 0) { return FALSE; } return $data; } } function ConstructData($namespace,$data) { $soapData = " <?xml version="1.0" encoding="utf-8"?> rn"; $soapData .= "<soap:Envelope xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="rn'>http://schemas.xmlsoap.org/soap/envelope/">rn"; $soapData .= " <soap:Body>rn"; $soapData .= " <$action xmlns="$namespace">rn"; foreach($data as $name => $value) { $name = iconv("GBK","UTF-8",$name); $value= iconv("GBK",$value); $soapData .= " <$name>$value</$name>rn"; } $soapData .= " </$action>rn"; $soapData .= " </soap:Body>rn"; $soapData .= "</soap:Envelope>"; return $soapData; } <? $data=array( 'user'=>'测试',//如果需要输入二进制数据请采用BASE64编码 'pass'=>'test' ); echo HttpSoap('sample.anyhost.com',80,'/sampleSoap.asmx','http://tempuri.org/','logIn',$data); ?> 希望本文所述对大家的PHP程序设计有所赞助. 《PHP实战:PHP实现Soap通讯的方法》是否对您有启发,欢迎查看更多与《PHP实战:PHP实现Soap通讯的方法》相关教程,学精学透。编程之家 52php.cn为您提供精彩教程。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |