最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

如何使用PHP实现一个WebService_MySQL

来源:动视网 责编:小采 时间:2020-11-09 19:11:14
文档

如何使用PHP实现一个WebService_MySQL

如何使用PHP实现一个WebService_MySQL:WSDLWSDL(网络服务描述语言,Web Services Description Language)是一门基于 XML 的语言,用于描述 Web Services 以及如何对它们进行访问。这种文档可描述某个 Web service。它可规定服务的位置,以及此服务提供的操作(或方法)。一个 WSDL 文档的主
推荐度:
导读如何使用PHP实现一个WebService_MySQL:WSDLWSDL(网络服务描述语言,Web Services Description Language)是一门基于 XML 的语言,用于描述 Web Services 以及如何对它们进行访问。这种文档可描述某个 Web service。它可规定服务的位置,以及此服务提供的操作(或方法)。一个 WSDL 文档的主


WSDL

WSDL(网络服务描述语言,Web Services Description Language)是一门基于 XML 的语言,用于描述 Web Services 以及如何对它们进行访问。这种文档可描述某个 Web service。它可规定服务的位置,以及此服务提供的操作(或方法)。

一个 WSDL 文档的主要结构是类似这样的:

		 definition of types........			 definition of a message....			 definition of a port.......			 definition of a binding....	

WSDL 文档可包含其它的元素,比如 extension 元素,以及一个 service 元素,此元素可把若干个 web services 的定义组合在一个单一的 WSDL 文档中。

PHP生成WSDL

类代码(SoapDiscovery.class.php):

class_name = $class_name; $this->service_name = $service_name; } /** * SoapDiscovery::getWSDL() Returns the WSDL of a class if the class is instantiable. * * @return string **/ public function getWSDL() { if (empty($this->service_name)) { throw new Exception('No service name.'); } $headerWSDL = "n"; $headerWSDL.= "n"; $headerWSDL.= "n"; if (empty($this->class_name)) { throw new Exception('No class name.'); } $class = new ReflectionClass($this->class_name); if (!$class->isInstantiable()) { throw new Exception('Class is not instantiable.'); } $methods = $class->getMethods(); $portTypeWSDL = ''; $bindingWSDL = 'nn"; $serviceWSDL = 'nnservice_name.'Port" binding="tns:'.$this->service_name."Binding">nnn"; $messageWSDL = ''; foreach ($methods as $method) { if ($method->isPublic() && !$method->isConstructor()) { $portTypeWSDL.= 'n".'ngetName()."Response" />nn"; $bindingWSDL.= 'n".'nnnnnnn"; $messageWSDL.= 'n"; $parameters = $method->getParameters(); foreach ($parameters as $parameter) { $messageWSDL.= 'n"; } $messageWSDL.= "n"; $messageWSDL.= 'n"; $messageWSDL.= 'n"; $messageWSDL.= "n"; } } $portTypeWSDL.= "n"; $bindingWSDL.= "n"; return sprintf('%s%s%s%s%s%s', $headerWSDL, $portTypeWSDL, $bindingWSDL, $serviceWSDL, $messageWSDL, ''); } /** * SoapDiscovery::getDiscovery() Returns discovery of WSDL. * * @return string **/ public function getDiscovery() { return "nnn"; }} ?>

使用方法(服务端server.php):

getWSDL(); file_put_contents(WSDL_URL,$str);} //SOAP开启并接收Client传入的参数响应 $server = new SoapServer(WSDL_URL);$server->setClass('HelloWorld');$server->handle(); //测试定义公开的类class HelloWorld { private $nombre = ''; public function __construct($name = 'World') {$this->name = $name;} public function greet($name = '') {$name = $name?$name:$this->name;return 'Hello '.$name.'.';} public function serverTimestamp() {return time();} }?>

客户端client.php:

greet('ieliwb'); var_dump($result); echo "The answer isresult";}catch (SoapFault $f){ echo "Error Message: {$f->getMessage()}";}?>

创建 Webservice

1. 创建wsdl

  • 非标准的webservice,可能只能PHP才能访问
  • 标准的webservice,就必须要使用wsdl(webservice description language,就是用XML语法标准来描述你的服务内容,我是这么理解的)
  • 在这里我只介绍标准的webservice。那么如何创建wsdl呢?对于PHP来说这确实是件很不容易的事情,有人说用zend studio创建很方便,这是一种方法。但对于那些不喜欢用zend studio的人来说,会觉得创建一个webservice还要安装zend studio,太强人所难了,我就是,嘿嘿。

    在这里我介绍一个简单的方法,到网上下载SoapDiscovery.class.php类,里面有个公用方法:getWSDL,这个方法末尾是用的return,那么,你修改一下这个方法,我是这么做的:

    //return sprintf('%s%s%s%s%s%s', $headerWSDL, $portTypeWSDL, $bindingWSDL, $serviceWSDL, $messageWSDL, '');//生成wsdl文件,将上面的return注释$fso = fopen($this->class_name . ".wsdl" , "w");fwrite($fso, sprintf('%s%s%s%s%s%s', $headerWSDL, $portTypeWSDL, $bindingWSDL, $serviceWSDL, $messageWSDL, ''));

    现在生成wsdl的类有了,SoapDiscovery.class.php。

    我只要再准备一个提供服务的类或者函数就可以创建wsdl了。比如我有个类:person,文件名为:person.class.php★,里面有两个方法,一个是say,一个是run。很简单。

    到这里有两个类了:SoapDiscovery.class.php和person.class.php。

    开始正式生成wsdl:创建文件server.php。将以下内容拷贝进去,运行即可生成一个person.wsdl文件

    getWSDL();?>

    2. 创建webservice服务端程序

    将server.php文件的内容清空,复制以下代码进去:

    setClass("person");//注册person类的所有方法 $objSoapServer->handle();//处理请求?>

    3. 创建webservice客户端程序,测试webservice是否有效,文件名是:client.php

    say()); echo "
    "; echo($client->run()); echo "
    ";?>

    OK,结束。.NET如果要使用的话,你只要提供一个url给他就行了。

    获得url的方法:你可以先到person.wsdl文件里面查找,这里的url(具体url是根据你的目录确定的)就是你要提供给.NET开发人员使用的。不过别高兴太早,后面要加:“?wsdl”,http://xxxxxxxxxxxxxxxxxxxx/server.php?wsdl这样才是对的,不信你可以将url拷贝到浏览器的地址栏里看下就知道了。

    .NET开发人员获得你给他的url之后,就可以在自己的项目里面添加一个服务引用或者web引用了,然后就可以根据提示完成相关操作,对于使用.NET的开发人员来说很简单的。

    文档

    如何使用PHP实现一个WebService_MySQL

    如何使用PHP实现一个WebService_MySQL:WSDLWSDL(网络服务描述语言,Web Services Description Language)是一门基于 XML 的语言,用于描述 Web Services 以及如何对它们进行访问。这种文档可描述某个 Web service。它可规定服务的位置,以及此服务提供的操作(或方法)。一个 WSDL 文档的主
    推荐度:
    标签: 如何 php 实现
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top