用php实现soap通讯

2016-01-29 13:41 9 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('

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

延伸阅读
标签: PHP
  作者:hutuworm 来源:糊涂馋寺 目前,不少网站为了防止用户利用机器人自动注册、登录、灌水,都采用了 验证码技术。所谓验证码,就是将一串随机产生的数字或符号,生成一幅图片, 图片里加上一些干扰象素(防止OCR),由用户肉眼识别其中的验证码信息,输 入表单提交网站验证,验证成功后才能使用某项功能。 我们这里展示...
#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详细信息。   ...