Home >Backend Development >PHP Tutorial >PHP soap Web Service uses SoapDiscovery.class.php to generate wsdl files, _PHP tutorial

PHP soap Web Service uses SoapDiscovery.class.php to generate wsdl files, _PHP tutorial

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOriginal
2016-07-12 08:54:331355browse

PHP soap web service uses SoapDiscovery.class.php to generate wsdl files,

PHP soap web service uses wsdl files demo:

================================================== ===============

Server:

Before using the soap webservice demo of wsdl, first use the cw.php file to generate the wsdl file. The code is as follows:

cw.php:

<?<span>php

</span><span>include</span>("service.php"<span>);
</span><span>include</span>("SoapDiscovery.class.php"<span>);

</span><span>$disco</span> = <span>new</span> SoapDiscovery('soapHandle', 'myService'); <span>//</span><span>第一个参数是类名(生成的wsdl文件就是以它来命名的),即Service类,第二个参数是服务的名字(这个可以随便写)。</span>
<span>$disco</span>->getWSDL();<br /><br />?>

service.php:

<?<span>php

</span><span>include_once</span>("soapHandle.class.php"<span>);

</span><span>$server</span> = <span>new</span> SoapServer('soapHandle.wsdl', <span>array</span>('soap_version' => SOAP_1_2)); <span>#</span><span>#此处的Service.wsdl文件是上面生成的</span>
<span>$server</span>->setClass("soapHandle"); <span>//</span><span>注册Service类的所有方法 </span>
<span>$server</span>->handle(); <span>//</span><span>处理请求</span>

?>

soapHandle.class.php :

<?<span>php

</span><span>class</span><span> soapHandle{

    </span><span>public</span> <span>function</span> strtolink(<span>$url</span>=''<span>){
        </span><span>return</span> <span>sprintf</span>('<a href="%s">%s</a>', <span>$url</span>, <span>$url</span><span>);
    }
    
    </span><span>public</span> <span>function</span> add(<span>$a</span>=1, <span>$b</span>=2<span>)
    {
        </span><span>return</span> <span>$a</span>+<span>$b</span><span>;
    }

}

</span>?>

SoapDiscovery.class.php code is as follows:

================================================== ============

PHP soap Web Service uses SoapDiscovery.class.php to generate wsdl files, _PHP tutorial92eb45140643a481564f5b16bd980a49class_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 = "0fceb78a3d7fd36b54d62f54d08f5d68n"; $headerWSDL.= "fd5936aa290c47c7469d2d2a0e6d8d24service_name" targetNamespace="urn:$this->service_name" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="urn:$this->service_name" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns="http://schemas.xmlsoap.org/wsdl/">n"; $headerWSDL.= "3616e775a87de808d245184907eb6a7fn"; 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 = '02efcd21d425f2cbeee316dfae276254service_name.'Port">'; $bindingWSDL = '5e6ff54368dc13dc87599154a5be208dservice_name.'Binding" type="tns:'.$this->service_name."Port">nbd31bd2fce261d239084bb55a9469069n"; $serviceWSDL = '45beddf829ad393ddc707bb84dd607f1service_name."">ndf34d2b26116543ff930477ab75c1680n9588589b133ee15909dcee8c4b421e05service_name.'Port" binding="tns:'.$this->service_name."Binding">c3169ca96fb260f8383d83af4a68acb6nb99adf09bba1702852b32782733b87e1n07aad2482592b0629b89dc8fa8f9c2a7n"; $messageWSDL = ''; foreach ($methods as $method) { if ($method->isPublic() && !$method->isConstructor()) { $portTypeWSDL.= '71d757a30493f0169e5e15d0825905ebgetName()."">n".'5b07250d1c6544b55de15d983c3b128egetName()."Request" />n5c7d130b74de118d2b0c8573155e3604getName()."Response" />n1ad87f86f8fa8a96626cc7ccfa3a84c1n"; $bindingWSDL.= '71d757a30493f0169e5e15d0825905ebgetName()."">n".'770a48f79ca5186d7910d5a619b7deabservice_name.'#'.$this->class_name.'#'.$method->getName()."" />nd5fd7aea971a85678ba271703566ebfdbbaf80dc7c554b71402a04abb7936b4bservice_name" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />n96ac42c95369ad8c9dbbd274b6bcc83anbe6d67dae90cc1ad6469079e163d0939nbbaf80dc7c554b71402a04abb7936b4bservice_name" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />nd76c8de0b204cd1b17c9571b0bbcceb6n1ad87f86f8fa8a96626cc7ccfa3a84c1n"; $messageWSDL.= 'd6364a72a6e1acd1bf9463aa3ccad55cgetName()."Request">n"; $parameters = $method->getParameters(); foreach ($parameters as $parameter) { $messageWSDL.= '450ec9ce891aa7ba89b4a18c9fdc56b5getName()."" type="xsd:string" />n"; } $messageWSDL.= "dc97c94abba54b3574a1f2a9fcb1679bn"; $messageWSDL.= 'd6364a72a6e1acd1bf9463aa3ccad55cgetName()."Response">n"; $messageWSDL.= 'c33bd57d944a491bb9e1bab73962e059getName()."" type="xsd:string" />n"; $messageWSDL.= "dc97c94abba54b3574a1f2a9fcb1679bn"; } } $portTypeWSDL.= "27dce114b4c1ba2dfb0528e105ceb3d8n"; $bindingWSDL.= "1e9f7c3e258ea1744ae938c0d94cef77n"; //return sprintf('%s%s%s%s%s%s', $headerWSDL, $portTypeWSDL, $bindingWSDL, $serviceWSDL, $messageWSDL, '7f07ce786ddcd59b488e151585f6d792'); $fso = fopen($this->class_name . ".wsdl", "w"); fwrite($fso, sprintf('%s%s%s%s%s%s', $headerWSDL, $portTypeWSDL, $bindingWSDL, $serviceWSDL, $messageWSDL, '7f07ce786ddcd59b488e151585f6d792')); } /** * SoapDiscovery::getDiscovery() Returns discovery of WSDL. * * @return string **/ public function getDiscovery() { return "0fceb78a3d7fd36b54d62f54d08f5d68nb41d29e33c868174e1c908f743454defn44a56b1a87335bff21091f2da3088745n6f4e04d14d894b590db95b28e2c72d22"; } } ?> View Code

 

客户端:

client.php 代码:

=============================================================

<?<span>php
    </span><span>ini_set</span>('soap.wsdl_cache_enabled', "0"); <span>//</span><span>关闭wsdl缓存</span>


    <span>$soap</span> = <span>new</span> SoapClient('http://localhost/soap/service.php?wsdl'<span>);
    </span><span>echo</span> <span>$soap</span>->strtolink('http://www.baidu.com')."<br/>"<span>;
    </span><span>echo</span> <span>$soap</span>->add(28, 100)."<br/>"<span>;
    </span><span>echo</span> <span>$soap</span>->__soapCall('add',<span>array</span>(28,200))."<br/>"<span>;
    </span><span>//</span><span>或这样调用</span>
    <span>echo</span> <span>$soap</span>->__Call('add',<span>array</span>(28,300))."<br/>"<span>;
    </span><span>echo</span> <span>date</span>('Y-m-d H:i:s', <span>time</span><span>());

</span>?>

 

================ END====================

 

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1119777.htmlTechArticlePHP soap Web Service 使用SoapDiscovery.class.php 生成wsdl文件, PHP soap web service 使用wsdl文件 demo: ============================================================== 服...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn