千家信息网

PHP5SOAP调用原理有哪些以及怎么实现

发表于:2024-12-12 作者:千家信息网编辑
千家信息网最后更新 2024年12月12日,本篇文章为大家展示了PHP5SOAP调用原理有哪些以及怎么实现,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。SOAP(SimpleObjectAccessPr
千家信息网最后更新 2024年12月12日PHP5SOAP调用原理有哪些以及怎么实现

本篇文章为大家展示了PHP5SOAP调用原理有哪些以及怎么实现,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

  SOAP(SimpleObjectAccessProtocol)简单对象访问协议是在分散或分布式的环境中交换信息的简单的协议,是一个基于XML的协议。下面小编来讲解下PHP5SOAP调用原理有哪些?PHP5SOAP调用怎么实现?

  PHP5SOAP调用原理

  SOAP它包括四个部分:SOAP封装(envelop),封装定义了一个描述消息中的内容是什么,是谁发送的,谁应当接受并处理它以及如何处理它们的框架;SOAP编码规则(encodingrules),用于表示应用程序需要使用的数据类型的实例;SOAPRPC表示(RPCrepresentation),表示远程过程调用和应答的协定;SOAP绑定(binding),使用底层协议交换信息。

  WSDL(WebServiceDescriptionLanguage)就是描述XMLWeb服务的标准XML格式,WSDL由Ariba、Intel、IBM和微软等开发商提出。它用一种和具体语言无关的抽象方式定义了给定Web服务收发的有关操作和消息。就其定义来说,你还不能把WSDL当作一种对象接口定义语言,例如,CORBA或COM等应用程序体系结构就会用到对象接口定义语言。WSDL保持协议中立,但它确实内建了绑定SOAP的支持,从而同SOAP建立了不可分割的联系。所以,当我在该文中讨论WSDL的时候,我会假定你把SOAP作为了你的通讯协议。

  SOAP和WSDL虽然是webservice的两大标准,但是两者并没有必然的联系,都可以独立使用。它们之间的关系就类似HTTP和Html之间的关系。前者是一种协议,后者是对一个WebServer的描述。

  PHP5SOAP调用怎么实现

  PHP5下的配置

  在php的的配置文件php.ini中,找到

  extension=php_soap.dll

  然后将前面的;号去掉,然后重启web服务

  查询webservice方法与参数、数据类型

  某省电信公司的入单接口为http://***.******.com/services/AcceptedBusinesswsdl

  我们使用SoapClient的__geunctions()和__getTypes()方法查看该接口的方法,参数和数据类型

  只有__getFunctions中列出的接口才能被soap调用。

  在根目录下创建代码soap.php

  header("content-type:text/html;charset=utf-8");

  try{

  $client=newSoapClient("http://***.******.com/services/AcceptedBusinesswsdl");

  print_r($client->__getFunctions());

  print_r($client->__getTypes());

  }catch(SOAPFault$e){

  print$e;

  }

  >

  在浏览器运行:http://localhost/soap.php后,返回结果如下

  Array

  (

  [0]=>ArrayOf_xsd_anyTypeintroduceAcceptedBusiness(string$c3,string$c4,string$linkman,string$linknum,string$num,string$idcard,string$remark,string$address)

  [1]=>ArrayOf_xsd_anyTypeintroduceAcceptedBusinessByAiZhuangWei(string$subname,string$linkphone,string$idcard,string$address,string$businesstype,string$marketcode,string$surveycode,string$commanager,string$commanagerphone,string$bendiwang,string$fenju,string$zhiju,string$remark)

  [2]=>stringintroduceAcceptedBusinessByStandardInterface(string$xmlStr)

  [3]=>stringintroduceAcceptedBusinessByCallOut(string$xmlStr)

  [4]=>stringintroduceAcceptedBusinessByYddj(string$xmlParam)

  [5]=>ArrayOf_xsd_anyTypequeryAcceptedBusinessByAiZhuangWei(string$surveycode,string$starttime,string$endtime)

  [6]=>stringqueryCallOutOrderByConfig(string$xmlParam)

  )

  Array

  (

  [0]=>anyTypeArrayOf_xsd_anyType[]

  )

  其中有个方法introduceAcceptedBusinessByStandardInterface(string$xmlStr),将是开发文档中提到的要使用的接口,参数为xml字符串

  另外有的接口中提到有SoapHeader认证,这就需要加入__setSoapHeaders方法,具体可查看http://php.net/manual/zh/soapclient.setsoapheaders.php

  提交入单

  这一步就是需要根据开发文档拼接xml字符串,然后作为introduceAcceptedBusinessByStandardInterface的参数传入

  创建acceptedbusiness.php,内容如下

  header("content-type:text/html;charset=utf-8");

  try{

  $client=newSoapClient('http://***.*******.com/services/AcceptedBusinesswsdl');

  $xml="

  **电信

  张三

  13412341234

  广东深圳

  iPhone6

  1111111111111111111111111111111

  2111

  1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111

  ";

  $return=$client->introduceAcceptedBusinessByStandardInterface($xml);

  print_r($return);

  }catch(SOAPFault$e){

  print_r('Exception:'.$e);

  }

  >

  在浏览器中执行后,返回

  0

  入单成功!

  2014100905523549742

上述内容就是PHP5SOAP调用原理有哪些以及怎么实现,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

0