当前位置: 首页 > 图文教程 > 网络编程 > PHP > 用php实现soap通讯

PHP
PHP技巧:详解phplib模板使用过程及运行原理
PHP技巧:Smarty+adodb分页示例
PHP技巧:PHP脚本中关于拼写检查函数库
PHP技巧:PHP脚本编程中的文件系统函数库
PHP技巧:PHP中几种删除目录的三种方法
学习PHP技术:txtSQL安装手册中文版
学习PHP:PHP的通用检测函数总结
详细学习PHP中对文件和目录的操作方法
PHP+MYSQL实例:网站在线人数的程序代码
Linux操作系统启动httpd失败的解决方法
初学:在PHP开发中如何使用Session?
PHP初学者遇到的中文乱码解决方案
PHP实例:实现文件上传的程序源码
PHP实例:常用的数值判断函数
PHP实例源代码:PHP实现翻页处理的类
PHP实例:从数组里筛选出重复的数据
PHP实例:用PHP实现windows风格的树型菜单
PHP实例程序:实现给上传图片加水印图案的做法
PHP实例:用PHP编写的网上调查投票系统
PHP实例:一个非常全面获取图象信息的PHP函数

PHP 中的 用php实现soap通讯


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 31 ::
收藏到网摘: n/a

用PHP实现Soap通讯 近日用PHP实现Soap通讯,写了一些简单的方法:引用文字
<?
phpfunction HttpSoap($server, $port, $url, $namespace, $action, $data) {$fp = @fsockopen($server, $port);if (!$fp) {return FALSE;} else {$soapData = ConstructData($namespace, $action, $data);$length = strlen($soapData);$out = "POST $url HTTP/1.1\r\n";$out .= "Host: $server\r\n";$out .= "Content-Type: text/xml; charset=utf-8\r\n";$out .= "Content-Length: $length\r\n";$out .= "SOAPAction: \"$namespace$action\"\r\n\r\n";$out .= $soapData;$out .= "\r\n\r\n";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, $action, $data) {$soapData = "
<?xml version="1.0\" encoding=\"utf-8\"?>
\r\n";$soapData .= "<soap:Envelope xmlns:xsi=\http://www.w3.org/2001/XMLSchema-instance\
xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xml
soap.org/soap/envelope/\">\r\n";$soapData .= " <soap:Body>\r\n";$soapData .= " <$action xmlns=\"$namespace\">\r\n";foreach($data as $name => $value) {$name = iconv("GBK","UTF-8",$name);$value= iconv("GBK","UTF-8",$value);$soapData .= " <$name>$value</$name>\r\n";}$soapData .= " </$action>\r\n";$soapData .= " </soap:Body>\r\n";$soapData .= "</soap:Envelope>";return $soapData;}
  1. <?
  2. $data=array(
  3. 'user'=>'测试', //如果需要输入二进制数据请采用BASE64编码
  4. 'pass'=>'test'
  5. ); 
  6. echo HttpSoap('