用php实现soap通讯

2016-01-29 13:41 8 1 收藏

用php实现soap通讯,用php实现soap通讯

【 tulaoshi.com - PHP 】

用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.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, $action, $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="http://schemas.xml
soap.org/soap/envelope/"rn";$soapData .= " <soap:Bodyrn";$soapData .= " <$action xmlns="$namespace"rn";foreach($data as $name = $value) {$name = iconv("GBK","UTF-8",$name);$value= iconv("GBK","UTF-8",$value);$soapData .= " <$name$value</$namern";}$soapData .= " </$actionrn";$soapData .= " </soap:Bodyrn";$soapData .= "</soap:Envelope";return $soapData;}
<? $data=array( 'user'='测试', //如果需要输入二进制数据请采用BASE64编码 'pass'='test' );  echo HttpSoap('

来源:https://www.tulaoshi.com/n/20160129/1491083.html

延伸阅读
标签: PHP
  图片链接广告大概是最为常用的网络广告模式,但是多条广告的动态随机显示可不是那么简单的事情。PHP的文件上传函数提供了在这块468x60像素的区域(网页广告的标准尺寸)实现能够根据权值大小而随机显示广告的解决方案,从而避免了开发FTP程序或是ASP和Perl CAI中需要外挂扩展才能实现此项功能的弊端。       ...
#include stdio.h #include stdlib.h  /*与malloc.h差不多*/ #include string.h #define maxlen 100 strUCt persons { char name[10]; /*定义结构体数组用于缓存数据*/  char addr[20];  char phnum[10];  }persons[maxlen]; ; ; ; typedef struct lnode{&...
首先,在对话框中创建通信控件,若Control工具栏中缺少该控件,可通过菜单Project -- Add to Project -- Components and Control插入即可,再将该控件从工具箱中拉到对话框中。此时,你只需要关心控件提供的对 Windows 通讯驱动程序的 API 函数的接口。 !-- frame contents --!-- /frame contents -- 换句话说,只需要设置和监视...
标签: PHP
  在最近几年,万维网(也称环球信息网,即WWW)不断改变信息处理技术的面貌。WEB已经快速地成为一种有效的媒介,并适合人们和商业沟通和协作。几乎所有的信息技术领域都普遍受到WEB的影响。Web访问带来更多用户和更多数据,这意味着给服务器和数据库更多压力和最终用户得到越来越慢的响应速度。与不断靠增加CPU,磁盘驱动器及内存来跟上...
标签: PHP
        由于Internet的历史原因,apin负责整个网络IP的整体规划以及北美区 还有部分非洲地区的IP分配管理,与此相应的是,whois.apin.net是IP whois的root server,标准的IP whois查询方法是,首先向whois.apin.net查询某个IP属于哪个大区,然后再向该区的whois 服务器查询此IP的whois详细信息。   ...