微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

weservice 配置二

开始:Hello Word!

  先来看代码
[PHP]<?PHP
/**
* 实现业务逻辑的类,此类是一个普通类
*
*/
class Basic {
       /**
        * 返回一个字符串:Hello World!
        *
        * @return string
        */
       public function returnString(){
               return "Hello World!";
       }
}
?> [/PHP]

  so简单,一个类,返回一个字符串。假设这个程序在服务器A上面,如果大少爷想在服务器B上面想调用这个程序怎么办?首先我们先要将这个类变成Web服务,这就需要使用PHP的SOAP扩展,如何安装这个扩展请参考PHP手册。安装好后,请看如下代码
[PHP]
<?PHP
/**
* Web Service的Server端,包含类文件
*/
require_once("Basic.PHP");
/**
* 创建Server对象
*/
$arrOptions = array('uri'=>'http://example.com/');    //设置命名空间
$objSoapServer = new SoapServer(null,$arrOptions);
/**
* 注册Basic类的所有方法
*/
$objSoapServer->setClass("Basic");
/**
* 处理请求
*/
$objSoapServer->handle();
?> [/PHP]
  OK,一个Web服务搭建好了,上面的例子中,我们创建了一个SoapServer对象,然后利用setClass函数将我们刚才编写的Basic类 set进去,最后handle(),那个命名空间我们先不去管它。现在如果用浏览器访问这个文件,会出现警告,这是正常的,因为这个文件不是用浏览器访问的,而是用另一个程序访问的。当一个客户端程序访问我们的WebService时,运行到handle()时会对客户端的输入进行处理,并输出结果给各户端。这里需要注意一下,不要在handle()之前和之后输出任何东西,否则客户端会处理不了。
好了,我们要编写客户端访问这个WebService。
[PHP]<?PHP
/**
* Client端,首先创建Client对象
*/
$arrOptions = array('uri'=>'http://example.com/',                     //设置命名空间
                       'location'=>'http://url/to/our/webservice',        //设置Server地址
                       'trace'=>true);
$objSoapClient = new SoapClient(null,$arrOptions);
/**
* 远程调用
*/
try{
   $strReturn = $objSoapClient->returnString();
}catch(Exception $e){
}
/**
* 打印结果
*/
echo $strReturn;
?> [/PHP]
  上面这个程序,我们首先创建了一个SoapClient对象,然后就像使用服务端的Basic对象一样调用returnString方法,并打印输出结果。不论你把这个PHP放在哪台服务器,只要它和服务端的网络能够相连,就能够得到我们期望的结果:Hello World!
  
  不论是SoapServer还是SoapClient,都接收两个参数,其中第二个参数是Option,它支持若干选项,这里我们用到的有:

  1. uri:命名空间,客户端和服务端需要使用相同的命名空间
  2. location:客户端用,用来指定服务端程序的访问地址,也就是本例第二段代码的程序地址。
  3. trace:客户端用,为true时可以获取服务端和客户端通信的内容,以供调试。

  你可以尝试将第一段代码扩展一下,填写更多的函数,看看返回整型、浮点型、数组、对象分别是什么样子,也可以尝试从客户端接收参数,处理一下再返回,或者利用SoapClient的函数跟踪一下客户端和服务端通信的内容(关于这些函数请查看PHP文档),你暂时可以不用太关心通信内容的含义。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐