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

PHP
使用无限生命期Session的方法
php+oracle 分页类
用PHP读取IMAP邮件
一段php加密解密的代码
基于qmail的完整WEBMAIL解决方案安装详解
用PHP发电子邮件
PHP网站提速三大“软”招
在线短消息收发的程序,不用数据库
PHP的开合式多级菜单程序
PHP的栏目导航程序
PHP系统流量分析的程序
用php写的serv-u的web申请账号的程序
php中的时间处理
在线竞拍系统的PHP实现框架(二)
用文本作数据处理
PHP 和 MySQL 基础教程(一)
浅谈PHP语法(1)
无数据库的详细域名查询程序PHP版(3)
域名查询代码公布
最省空间的计数器

PHP 中的 用php实现soap通讯


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