关于web service的几点认识

关于web service的认识


可以用于数据交互,数据共享,可以为别人提供访问数据库的接口;


1:web service 是一种分布式服务器;基于XML+http,具有通用性,无关平台,无关编程语言的限制
2:web service 包括三个:UDDI  WSDL   SOAP;
3:UDDI 是目录,用来注册web service;WSDL,是服务语言,跟XML格式差不多,可以用
   zend studio集成工具自动生成;也可以用PHP 的SoapDiscover.class.php这个类库生成;当然
    也可以手写;SOAP,是一种协议;
4:soap包括两种形式:无WSDL和有WSDL;分开介绍
  php需要配置php.ini配置文件,将php_soap.dll前面的分号去掉;



   无WSDL形式:
   分为服务端和客户端;
   这里用到的是php5支持的soap扩展类;SoapServer,SoapClient
   以一个例子来说明:
服务端server.php


 <?php   


//实例化的参数手册上面有,这个是没有使用wsdl的,所以第一个参数为null,如果有使用wsdl,
  那么第一个参数就是这个wsdl文件的地址。   
$server = new SoapServer(null, array('uri' =>'soap_server'));
$server->addFunction('sayhello');
$server->handle();   


function sayhello($name){
if(isset($name))
{


 
 return "hello".$name;
}
}
?>
  客户端client.php
<?php
header("Content-type:text/html; charset=UTF-8");


try{
$soap = new SoapClient(null,array('location'=>"http://127.0.0.1/server.php",'uri'=>"soap_server"));
$name ="AS234";
$hello = $soap->sayHello($name);
var_dump($hello);


}catch(SoapFault $fault){


echo"cuowi";
}




?>
用浏览器访问客户端文件:得到结果:helloAS234;


  有WSDL模式


这里需要一个后缀为WSDL格式的文件,用来存储信息;这个可以自动生成;
方法如下:
  (1)create_wsdl.php
   //访问这个文件,生成service.wsdl文件;
   <?php


require('service.php');
require('SoapDiscover.class.php'); //引用生成wsdl的类
$wsdl = new SoapDiscovery("service", "soap"); //第一个参数为类名,也是生成的wsdl的文件名;
                                           第二个参数名任意
$wsdl->getWSDL();//调用生成方法
 
?>
  (2)service.php
    <?php


class service {


    public function HelloWorld() {
        return "Hello";
    }


    public function Add($a, $b) {
        return $a + $b;
    }


}
?>
生成wsdl之前用上面这个;生成了wsdl后再在这个文件里面加入
$server = new SoapServer('service.wsdl', array('soap_version' => SOAP_1_2));
$server->setClass("service"); //注册Service类的所有方法 
$server->handle(); //处理请求
    (3)client.php
     用来访问wsdl文件的客户端
   <?php
ini_set('soap.wsdl_cache_enabled', "0"); //关闭wsdl缓存


  $soap = new SoapClient('http://localhost/soapexample/service.php?wsdl'); 
  echo $soap->Add(28, 2);
  //echo $soap->__soapCall('Add',array(28,2))//或这样调用
?>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值