WebService之PHP

一、WebService 概念

WebService是一种跨编程语言和跨操作系统平台的远程调用技术。通过Web Service,客户端client和服务端server可以自由的用HTTP进行通信,无需理会两个程序的平台和编程语言。

说到WebService,就必须说XMLSOAPWSDL知识。

WebService 将数据封装成XML格式打包,根据HTTP协议进行数据传输XML中说明调用远程服务对象的哪个方法、传递的參数是什么、以及服务对象的返回结果是什么。

XMLWebService平台中表示数据的格式。除了易于建立和易于分析外,XML基本的有点在于它既是与平台无关的,也是与厂商无关的。

SOAPWebService通过HTTP协议发送请求和接收结果时。发送的请求内容和结果内容都采用XML格式封装,并添加了一些特定的HTTP消息头。以说明HTTP消息的内容格式。这些特定的HTTP消息头和XML内容格式就是SOAP协议。SOAP提供了标准的RPC方法来调用Web Service

SOAP协议 = HTTP协议 + XML数据格式。

WSDLWeb Service Description Language)是基于XML的语言。用于描写叙述Web Service及其函数、參数和返回值,它是WebServiceclient和server端都能理解的标准格式。

由于是基于XML的,所以WSDL及时机器可阅读的。又是人可阅读的。WSDL文件保存在Webserver上,通过一个url地址就能够訪问到它。client要调用一个WebService服务之前,要知道该服务的WSDL文件的地址。

WebService服务提供商能够通过两种方式来暴露它的WSDL文件地址:1、注冊到UUIDserver,以便被人查找;2、直接告诉给client调用者。

二、WebService之PHP

1创建——TestWebServ.php

该类就是实现你想要对外提供的接口,功能是它接收一个字符串。然后返回输入的字符串。代码如下

<?php

class TestWebServ{
    //我的测试接口方法
    public function rtnStr($a){
        return $a;
    }

}
?>
2、 生成wsdl文件——Create_wsdl.php

    为了生成wsdl文件,我们能够使用网上提供的SoapDiscovery.class.php中的getWSDL提供的方法来实现。该SoapDiscovery.class.php的代码在网上能够下载到,为了生成文件,我们须要改动getWSDL方法中的部分代码(加上写文件的代码),修改SoapDiscovery.class.php如下

//return sprintf('%s%s%s%s%s%s', $headerWSDL, $portTypeWSDL, $bindingWSDL, $serviceWSDL, $messageWSDL, '</definitions>');
			
			//!凝视掉return,加入例如以下代码。目的是为了调用getWSDL生成.wsdl文件
			$fso = fopen($this->class_name.".wsdl", "w");
			fwrite($fso, sprintf('%s%s%s%s%s%s', $headerWSDL, $portTypeWSDL, $bindingWSDL, $serviceWSDL, $messageWSDL, '</definitions>'));
                        fclose($fso);

下载修改完SoapDiscovery.class.php之后我们开始定义自己的Create_wsdl.php,通过执行它来生成TestWebServ.wsdl。例如以下:

<?php 
	include("TestWebServ.php");
	include("SoapDiscovery.class.php");	
	//! 第一个參数是类名。生成的wsdl文件就是以它来命名的。第二个參数是服务的名称,能够随便写
	$disco = new SoapDiscovery('TestWebServ', 'service');
	$disco->getWSDL();
?>
执行完Create_wsdl.php之后,就会在当前目录下生成wsdl格式文件

3、生成TestWebServ.wsdl文件之后,新建server.php(包含TestWebServ.php文件),代码如下:

<?php

include("TestWebServ.php");
$server = new SoapServer('TestWebServ.wsdl', array('soap_version' => SOAP_1_2)); ##此处的TestWebServ.wsdl文件是上面生成的
$server->setClass("TestWebServ"); //注册TestWebServ类的所有方法 

$server->handle();

?>

5、修改TestWebServ.wsdl文件,将绑定改为“server.php”

改前:


改后:


5、客户端測试,Test.php用来测试我们刚写的Web Server的服务端是否能可用,代码例如以下:

<?php 
 ini_set('soap.wsdl_cache_enabled', "0"); //关闭wsdl缓存
 $soap = new SoapClient('http://localhost:8089/eml/service/TestWebServ.wsdl');//这里的链接换成你自己的访问链接
 echo $soap->rtnStr('it success');
?> 

结果如下:


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值