龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > php编程 >

分享一个好用WEBSERVICE,可自动生成WSDL文件,

时间:2014-07-22 14:49来源: 作者: 点击:
分享到:
分享一个好用WEBSERVICE,可自动生成WSDL文件,
分享一个好用WEBSERVICE,可自动生成WSDL文件, 
<?php
/*
	//这是非标准的webservice,可能只有PHP才能访问
	//SoapServer
	//ryan 2013-08-13	
*/
$soap = new SoapServer(null,array('uri'=>"http://127.0.0.1/"));
/*
//function //可直接定义方法
$soap->addFunction('test');
$soap->addFunction(SOAP_FUNCTIONS_ALL);
$soap->handle();
function test(){
	return 'ryan';
}
*/
//class	//或者定义类
$soap->setClass('soapClass');
$soap->handle();
class soapClass{
    public $say='say hello';
    function test() {
        return $this->say;
    }
}
/*
	//SoapClient 调用方法和调用类的方式是一样的
	$client = new SoapClient(null,array('location' =>"http://127.0.0.1/webservice/soap/server.php",'uri' => "http://127.0.0.1/"));
	$data=$client->test();
	echo $data
*/

3. [代码][PHP]代码     跳至 [2] [3] [全屏预览]

<?php
/*
	//这是标准的webservice,适用所有语言
	//SoapServer
	//ryan 2013-08-13
	//注意,每改变服务器端文件中类的方法,要注意删掉原有的WSDL文件,并访问一下当前文件以便生成最新的WSDL文件
*/
    class ryan{//定义类
		public function say(){
			return "say hello";
		}
		public function json($arr){
			//return json_encode($arr);
			return $arr;
		}	
		/*
			如果要指定接收的参数类型是数组,要注意将WSDL文件里的接收参数类型设置为下
			<part name="arr" type="xsd:string[]" />
			同理返回参数类型如果是数组也需要更改下
		*/
    }
	$wsdl="ryan.wsdl"; 
	$class="ryan";
	if(!file_exists($wsdl)){//如果WSDL文件不存在,调用类创建
 		require_once("SoapDiscovery.class.php");
		$disco = new SoapDiscovery($class,$class);
		$wsdlxmlstr = $disco->getWSDL();
		file_put_contents($wsdl,$wsdlxmlstr);
	}
	//定义接口
    $SoapServer = new SoapServer($wsdl);
    //$SoapServer = new SoapServer("server.php?wsdl");
    $SoapServer->setClass($class);
    $SoapServer->handle();
/*
	//SoapClient
    $client = new SoapClient("http://127.0.0.1/webservice/wsdl/server.php?wsdl");
    $data=$client->say();
	echo $data;	
*/
精彩图集

赞助商链接