现在的位置: 首页 > 编程语言 > 正文

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

2020年04月27日 编程语言 ⁄ 共 3143字 ⁄ 字号 评论关闭

  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调用原理有哪些?PHP5SOAP调用怎么实现”的内容,希望对大家有用。更多资讯请关注学步园。学步园,您学习IT技术的优质平台!

抱歉!评论已关闭.