加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

weservice 配置(二)

发布时间:2020-12-17 02:08:37 所属栏目:安全 来源:网络整理
导读:开始:Hello Word! 先来看代码: [php]?php /** * 实现业务逻辑的类,此类是一个普通类 * */ class Basic { ? ?? ? /** ? ?? ???* 返回一个字符串:Hello World! ? ?? ???* ? ?? ???* @return string ? ?? ???*/ ? ?? ? public function returnString(){ ? ?

开始: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文档),你暂时可以不用太关心通信内容的含义。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读