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

PHP
php 获取可变函数参数的函数
自动把纯文本转换成Web页面的php代码
JieqiCMS 杰奇1.5注册机php源码
php 正则表达式小结
ajax php 实现写入数据库
用php将任何格式视频转为flv的代码
用PHP读取flv文件的播放时间长度
PHP 内存缓存加速功能memcached安装与用法
php getsiteurl()函数
php中$_SERVER[PHP_SELF] 和 $_SERVER[SCRIPT_NAME]之间的区别
不要轻信 PHP_SELF的安全问题
php 遍历数据表数据并列表横向排列的代码
php 获取远程网页内容的函数
PHP 危险函数全解析
PHP 获取MSN好友列表的代码(2009-05-14测试通过)
PHP 裁剪图片成固定大小代码方法
封装一个PDO数据库操作类代码
php 从数据库提取二进制图片的处理代码
frename PHP 灵活文件命名函数 frename
PHP 5.0中多态性的实现方案浅析

PHP 中的 用php实现soap通讯


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 130 ::
收藏到网摘: 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('