用php5+ 做 webservice (php soap webservice)

SOAP简单对象访问协议

  (SOAPSimple Object Access Protocol

  简单对象访问协议(SOAP)是一种轻量的、简单的、基于 XML 的协议,它被设计成在 WEB 上交换结构化的和固化的信息。 SOAP 可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议( HTTP),简单邮件传输协议(SMTP),多用途网际邮件扩充协议(MIME)。它还支持从消息系统到远程过程调用(RPC)等大量的应用程序。

  SOAP 包括四个部分:

  SOAP 封装:它定义了一个框架 , 该框架描述了消息中的内容是什么,谁应当处理它以及它是可选的还是必须的。

  SOAP 编码规则:它定义了一种序列化的机制,用于交换应用程序所定义的数据类型的实例。

  SOAP RPC 表示:它定义了用于表示远程过程调用和应答的协定。

  SOAP 绑定:定义了一种使用底层传输协议来完成在节点间交换SOAP封装的约定。

  SOAP 消息基本上是从发送端到接收端的单向传输,但它们常常结合起来执行类似于请求 / 应答的模式。所有的 SOAP 消息都使用 XML 编码。一条 SOAP 消息就是一个包含有一个必需的 SOAP 的封装包,一个可选的 SOAP 标头和一个必需的 SOAP 体块的 XML 文档。

  把 SOAP 绑定到 HTTP 提供了同时利用 SOAP 的样式和分散的灵活性的特点以及 HTTP 的丰富的特征库的优点。在 HTTP 上传送 SOAP 并不是说 SOAP 会覆盖现有的 HTTP 语义,而是 HTTP 上的 SOAP 语义会自然的映射到 HTTP 语义。在使用 HTTP 作为协议绑定的场合中, RPC 请求映射到 HTTP 请求上,而 RPC 应答映射到 HTTP 应答。然而,在 RPC 上使用 SOAP 并不仅限于 HTTP 协议绑定。

  SOAP也可以绑定到TCPUDP协议上。  

WSDL 简介

  Web Services Description Language的缩写,是一个用来描述Web服务和说明如何与Web服务通信的XML 语言。 

php5+ webservice

1,首先要设置服务器环境。

  修改php.ini

  得添加 extension=php_soap.dll (加载soap 内置包)

  修改 soap.wsdl_cache_enabled=1  改为 soap.wsdl_cache_enabled=0

 

2,soap 服务端。( Zend Studio For Eclipse 编写)

  2.1, 写一个用来提供给客户端用的类文件 ( DizzyLion.php )

  Class DizzyLion {

                      / **

                      * 求和函数

                      * @param float $p_a

                      * @param float $p_b

                      * @return float           

                      * /

                   Public function sum($p_a, $p_b){

                          Return $p_a + $p_b;

                   }

 }

说明:写上函数的标准注释有利于下面做wsdl的工作。

2.2, 生成wsdl 文件。(dizzylion.wsdl)如果这个你能手写,那你真是太强了。我用zend studio 生成的。

       我用的Zend Studio for Eclipse 6.1

       ’File’->’Export’->’PHP’->’WSDL File’

       “Generate WSDL File” 的窗口中。

       Configuration name 取自己想设的名字;File name 指定要生成wsdl文件(dizzylion.wsdl);Exported files “Add”添加刚刚的 DizzyLion.php类文件;在 classer url 就会出现DizzyLion.php的所有类, 勾选 DizzyLion. url 写入 server.phpWEB访问URL如:http://localhot/server.php。点“finish”就好了。如果有上面的标准注释这里就不用再去设置wsdl里对应参数类型之类了。

2.3, Soap 服务端文件 (server.php)

       <?php

              Require ‘./DizzyLion.php’;

              $server = new SoapServer(‘./dizzylion.wsdl’);

              $server->setClass(‘DizzyLion’);

              $server->handle();

         ?>

3, Soap客户端。(client.php)

<?php

   $soap = new SoapClient(‘./dizzylion.wsdl’); //如果是远程,那当然写dizzylion.wsdlURL了。

   echo $soap->sum(1.1,  3.1);

?>

  运行client.php 得到 4.2 .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值