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

PHP
PHP中的代码安全和SQL Injection防范
PHP数组实例总结及说明
一个php的图片水印的程序
PHP常见漏洞被攻击原因分析
PHP 5.2.8 紧急发布 修复5.2.7严重漏洞
编写安全 PHP 应用程序的七个习惯
PHP中常用的函数库和一些小技巧
PHP安全基础原则与方法
PHP函数速查表
PHP开发语言中的精华和技巧
测试在每个层上对PHP代码进行检查
不同文件构建PHP程序的正确方式
用phpinfo来实现PHP配置统计
更好的构造开发模板 五种常见的PHP设计模式
PHP的十个高级技巧
PHP对文本数据库的基本操作方法
967个函式列表 PHP常用语法速查表
实用:JAVA事件模式下PHP如何实现
针对配置文件 PHP最常用的ini函数
用PHP开发qmail邮件服务器管理系统

PHP 中的 用php实现soap通讯


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