PHP5对weervice的实现_PHP技巧_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

PHP5对weervice的实现

作者:黑客防线网安PHP教程基地 来源:黑客防线网安PHP教程基地 浏览次数:0

本篇关键词:实现/>'type
黑客防线网安网讯:  来段企业级应用吧,主要是讲PHP5对webservice的一些实现(以下的程序可以被JAVA,NET,C等正常调用)    国内用PHP写WebService的真的很少,网上资料也没多少,公司的项目开发过程中,...
  来段企业级应用吧主要是讲PHP5对webservice的一些实现(以下的程序可以被JAVANET,C等正常调用)
  
  国内用PHP写WebService的真的很少,网上资料也没多少,公司的项目开发过程中,经历了不少这方面的东西,写出来以供大家参考(谢谢老农提供的WSDL和程序文件)
  
  客户端
  
  <?php
  
  header("Content-Type:text/html;charset=utf-8");
  
  /*
  
  *指定WebService路径并初始化一个WebService客户端
  
  */
  
  $ws="http://soap/soapCspMessage.php?wsdl";
  
  $client=newSoapClient($ws,array('trace'=>1,'uri'=>'http://www.zxsv.com/SoapDiscovery/'));
  
  /*
  
  *获取SoapClient对象引用的服务所提供的所有方法
  
  */
  
  echo("SOAP服务器提供的开放函数:");
  
  echo('<pre>');
  
  var_dump($client->__getFunctions());
  
  echo('</pre>');
  
  echo("SOAP服务器提供的Type:");
  
  echo('<pre>');
  
  var_dump($client->__getTypes());
  
  echo('</pre>');
  
  echo("执行GetGUIDNode的结果:");
  
  //$users=$client->GetUsers();
  
  //var_dump($HelloWorld);
  
  $parameters=array('uname'=>'zxsv',"upassword"=>'123');
  
  $out=$client->HelloWorld($parameters);
  
  $datadb=$out->HelloWorldResponse;
  
  var_dump($out);
  
  ?>
  
  服务端
  
  <?php
  
  classMember
  
  {
  
  public$UserId;
  
  public$Name;
  
  publicfunction__construct($parmas){
  
  $this->UserId=$parmas[0];
  
  $this->Name=$parmas[1];
  
  }
  
  }
  
  $servidorSoap=newSoapServer('testphp.xml',array('uri'=>'http://www.TestPHP.com/','encoding'=>'utf-8','soap_version'=>SOAP_1_2));
  
  $servidorSoap->setClass(Testphp);
  
  $servidorSoap->handle();
  
  classTestphp{
  
  publicfunctionHelloWorld($uid){
  
  returnarray('HelloWorldResult'=>"mystring".$uid->{'uname'}.'and'.$uid->{'upassword'});
  
  }
  
  publicfunctionGetMember($uid){
  
  $s=array();
  
  for($i=0;$i<$uid->{'uid'};$i++){
  
  $s[]=&newMember(array($i,$uid->{'uname'}.'我测试'.$i));
  
  }
  
  returnarray('GetMemberResult'=>$s);
  
  }
  
  }
  
  ?>
  
  到这里应该都看的懂吧
  
  下面是WSDL文件
  
  <?xmlversion="1.0"encoding="utf-8"?>
  
  <wsdl:definitionsxmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"xmlns:tns="http://www.TestPHP.com/"xmlns:s="http://www.w3.org/2001/XMLSchema"xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"targetNamespace="http://www.TestPHP.com/"xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
  
  <wsdl:types>
  
  <s:schemaelementFormDefault="qualified"targetNamespace="http://www.TestPHP.com/">
  
  <s:elementname="HelloWorld">
  
  <s:complexType>
  
  <s:sequence>
  
  <s:elementminOccurs="0"maxOccurs="1"name="uname"type="s:string"/>
  
  <s:elementminOccurs="0"maxOccurs="1"name="upassword"type="s:string"/>
  
  </s:sequence>
  
  </s:complexType>
  
  </s:element>
  
  <s:elementname="HelloWorldResponse">
  
  <s:complexType>
  
  <s:sequence>
  
  <s:elementminOccurs="0"maxOccurs="1"name="HelloWorldResult"type="s:string"/>
  
  </s:sequence>
  
  </s:complexType>
  
  </s:element>
  
  <s:elementname="GetMember">
  
  <s:complexType>
  
  <s:sequence>
  
  <s:elementminOccurs="1"maxOccurs="1"name="uid"type="s:int"/>
  
  <s:elementminOccurs="0"maxOccurs="1"name="uname"type="s:string"/>
  
  </s:sequence>
  
  </s:complexType>
  
  </s:element>
  
  <s:elementname="GetMemberResponse">
  
  <s:complexType>
  
  <s:sequence>
  
  <s:elementminOccurs="0"maxOccurs="1"name="GetMemberResult"type="tns:ArrayOfMember"/>
  
  </s:sequence>
  
  </s:complexType>
  
  </s:element>
  
  <s:complexTypename="ArrayOfMember">
  
  <s:sequence>
  
  <s:elementminOccurs="0"maxOccurs="unbounded"name="Member"nillable="true"type="tns:Member"/>
  
  </s:sequence>
  
  </s:complexType>
  
  <s:complexTypename="Member">
  
  <s:sequence>
  
  <s:elementminOccurs="1"maxOccurs="1"name="UserId"type="s:int"/>
  
  <s:elementminOccurs="0"maxOccurs="1"name="Name"type="s:string"/>
  
  </s:sequence>
  
  </s:complexType>
  
  </s:schema>
  
  </wsdl:types>
  
  <wsdl:messagename="HelloWorldSoapIn">
  
  <wsdl:partname="parameters"element="tns:HelloWorld"/>
  
  </wsdl:message>
  
  <wsdl:messagename="HelloWorldSoapOut">
  
  <wsdl:partname="parameters"element="tns:HelloWorldResponse"/>
  
  </wsdl:message>
  
  <wsdl:messagename="GetMemberSoapIn">
  
  <wsdl:partname="parameters"element="tns:GetMember"/>
  
  </wsdl:message>
  
  <wsdl:messagename="GetMemberSoapOut">
  
  <wsdl:partname="parameters"element="tns:GetMemberResponse"/>
  
  </wsdl:message>
  
  <wsdl:portTypename="TestPHPSoap">
  
  <wsdl:operationname="HelloWorld">
  
  <wsdl:inputmessage="tns:HelloWorldSoapIn"/>
  
  <wsdl:outputmessage="tns:HelloWorldSoapOut"/>
  
  </wsdl:operation>
  
  <wsdl:operationname="GetMember">
  
  <wsdl:inputmessage="tns:GetMemberSoapIn"/>
  
  <wsdl:outputmessage="tns:GetMemberSoapOut"/>
  
  </wsdl:operation>
  
  </wsdl:portType>
  
  <wsdl:bindingname="TestPHPSoap"type="tns:TestPHPSoap">
  
  <soap:bindingtransport="http://schemas.xmlsoap.org/soap/http"/>
  
  <wsdl:operationname="HelloWorld">
  
  <soap:operationsoapAction="http://www.TestPHP.com/HelloWorld"/>
  
  <wsdl:input>
  
  <soap:bodyuse="literal"/>
  
  </wsdl:input>
  
  <wsdl:output>
  
  <soap:bodyuse="literal"/>
  
  </wsdl:output>
  
  </wsdl:operation>
  
  <wsdl:operationname="GetMember">
  
  <soap:operationsoapAction="http://www.TestPHP.com/GetMember"/>
  
  <wsdl:input>
  
  <soap:bodyuse="literal"/>
  
  </wsdl:input>
  
  <wsdl:output>
  
  <soap:bodyuse="literal"/>
  
  </wsdl:output>
  
  </wsdl:operation>
  
  </wsdl:binding>
  
  <wsdl:bindingname="TestPHPSoap12"type="tns:TestPHPSoap">
  
  <soap12:bindingtransport="http://schemas.xmlsoap.org/soap/http"/>
  
  <wsdl:operationname="HelloWorld">
  
  <soap12:operationsoapAction="http://www.TestPHP.com/HelloWorld"/>
  
  <wsdl:input>
  
  <soap12:bodyuse="literal"/>
  
  </wsdl:input>
  
  <wsdl:output>
  
  <soap12:bodyuse="literal"/>
  
  </wsdl:output>
  
  </wsdl:operation>
  
  <wsdl:operationname="GetMember">
  
  <soap12:operationsoapAction="http://www.TestPHP.com/GetMember"/>
  
  <wsdl:input>
  
  <soap12:bodyuse="literal"/>
  
  </wsdl:input>
  
  <wsdl:output>
  
  <soap12:bodyuse="literal"/>
  
  </wsdl:output>
  
  </wsdl:operation>
  
  </wsdl:binding>
  
  <wsdl:servicename="TestPHP">
  
  <wsdl:portname="TestPHPSoap"binding="tns:TestPHPSoap">
  
  <soap:addresslocation="http://soap/goodwsdl/testphp.php"/>
  
  </wsdl:port>
  
  <wsdl:portname="TestPHPSoap12"binding="tns:TestPHPSoap12">
  
  <soap12:addresslocation="http://soap/goodwsdl/testphp.php"/>
  
  </wsdl:port>
  
  </wsdl:service>
  
  </wsdl:definitions>
  
  这里有返回的两个字段,一个是返回字符串,这个很好理解
  
  <s:elementname="HelloWorld">
  
  <s:complexType>
  
  <s:sequence>
  
  <s:elementminOccurs="0"maxOccurs="1"name="uname"type="s:string"/>
  
  <s:elementminOccurs="0"maxOccurs="1"name="upassword"type="s:string"/>
  
  </s:sequence>
  
  </s:complexType>
  
  </s:element>
  
  <s:elementname="HelloWorldResponse">
  
  <s:complexType>
  
  <s:sequence>
  
  <s:elementminOccurs="0"maxOccurs="1"name="HelloWorldResult"type="s:string"/>
  
  </s:sequence>
  
  </s:complexType>
  
  </s:element>
  
  这一段就字符串的
  
  那返回数组的就比较麻烦了,我和老农搞了一两周才发现是WSDL文件写错了,看下面的一段
  
  <s:elementname="GetMember">
  
  <s:complexType>
  
  <s:sequence>
  
  <s:elementminOccurs="1"maxOccurs="1"name="uid"type="s:int"/>
  
  <s:elementminOccurs="0"maxOccurs="1"name="uname"type="s:string"/>
  
  </s:sequence>
  
  </s:complexType>
  
  </s:element>
  
  <s:elementname="GetMemberResponse">
  
  <s:complexType>
  
  <s:sequence>
  
  <s:elementminOccurs="0"maxOccurs="1"name="GetMemberResult"type="tns:ArrayOfMember"/>
  
  </s:sequence>
  
  </s:complexType>
  
  </s:element>
  
  <s:complexTypename="ArrayOfMember">
  
  <s:sequence>
  
  <s:elementminOccurs="0"maxOccurs="unbounded"name="Member"nillable="true"type="tns:Member"/>
  
  </s:sequence>
  
  </s:complexType>
  
  <s:complexTypename="Member">
  
  <s:sequence>
  
  <s:elementminOccurs="1"maxOccurs="1"name="UserId"type="s:int"/>
  
  <s:elementminOccurs="0"maxOccurs="1"name="Name"type="s:string"/>
  
  </s:sequence>
  
  </s:complexType>
  
  第一段GetMember是输入,最重要的是GetMemberResponse这段,看type="tns:ArrayOfMember"这里,返回一个数组,WSDL中定义了ArrayOf这个,后面的就简单了,ArrayOfMember的类型是type="tns:Member",从name="Member"得到要返回的数组,完工
  
  
    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-17532-1.html
网站维护教程更新时间:2012-09-21 05:20:40  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer