我们先来看看php如何调用webservice应用介绍
Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。是:通过SOAP在 Web上提供的软件服务,使用WSDL文件进行说明,并通过UDDI进行注册。
XML:(Extensible Markup Language)扩展型可标记语言。面向短期的临时数据处理、面向万维网络,是Soap的基础。
Soap: (Simple Object Access Protocol)简单对象存取协议。是XML Web Service 的通信协议。当用户通过UDDI找到你的WSDL描述文档后,他通过可以SOAP调用你建立的Web服务中的一个或多个操作。SOAP是XML文档形式的 调用方法的规范,它可以支持不同的底层接口,像HTTP(S)或者SMTP。
WSDL:(Web Services Description Language) WSDL 文件是一个 XML 文档,用于说明一组 SOAP 消息以及如何交换这些消息。大多数情况下由软件自动生成和使用。
UDDI (Universal Description, Discovery, and Integration) 是一个主要针对Web服务供应商和使用者的新项目。在用户能够调用Web服务之前,必须确定这个服务内包含哪些商务方法,找到被调用的接口定义,还要在服 务端来编制软件,UDDI是一种根据描述文档来引导系统查找相应服务的机制。UDDI利用SOAP消息机制(标准的XML/HTTP)来发布,编辑,浏览 以及查找注册信息。它采用XML格式来封装各种不同类型的数据,并且发送到注册中心或者由注册中心来返回需要的数据。
Yii框架webservice 在一个控制器/动作中使用多个方法的解决方案
Yii的webservice是强大的,但是官方文档太垃圾,Api看了和没看一样,百度google的搜索提供不了任何帮助。所以我一定要记录下来,好让后来者不再浪费时间探索。
首先,跟着官方文档一步步走,你肯定可以写出你的webservice,唯一要注意的注释他也强调了。
第二,就是返回对象数组的时候,最好不要用他提供的方式,应该返回string类型,return的时候用CJSON::ENCODE()方法把对象数组变成json数组,然后以字符串形式发送。
客户端接收的时候再用CJSON::DECODE()得到一个数组 。
第三,如果是单个对象,同样可以使用上面的方法,转化为string发送,客户端接收再返回数组,数组在转化为对象即可。如果直接用object类型发送过来,得到的是stdclass对象,这个对象不能直接使用,怎么使用请百度.到处都是.
第四,官发只在一个控制器/动作中定义了一个方法,那如果再定义一个方法,你肯定是调用不到的,他会报错:这个function是无效的。那总不能一个控制器/动作只能写一个方法吧?解决办法就是:客户端调用的时候,在url参数后面加一串随机数...这样就能调用一个控制器/动作里的多个方法了!