zoukankan      html  css  js  c++  java
  • php soap实现WebService接口

    nusoap是php写的一个功能文件,下载地址:http://pan.baidu.com/s/1i3mUQJr

    一、不使用wsdl
    服务端 server.php

    <?php  
    	//包函nusoap.php  
    	require_once('./lib/nusoap.php');  
    	  
    	//创建服务端  
    	$server = new soap_server;  
    	  
    	//定义客户端调用方法  
    	$server->register('hello');  
    	  
    	//调用方法以及参数  
    	function hello($name) {  
    		return 'Hello, ' . $name;  
    	}  
    	  
    	$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';  
    	$server->service($HTTP_RAW_POST_DATA);  
    ?>  
    

    客户端 client.php

    <?php  
    	//包函nusoap.php  
    	require_once('./lib/nusoap.php');  
    	//新建一个soap客户端,调用服务端提供的wsdl  
    	$client = new soapclient('http://localhost/test/server.php');  
    	//查看一下是不是报错  
    	$err = $client->getError();  
    	if ($err) {  
    		//显示错误  
    		echo '<h2>Constructor error</h2><pre>' . $err . '</pre>';  
    	}  
    	  
    	//调用服务端的方法  
    	$result = $client->call('hello', array('person' => "this is a test"));  
    	  
    	echo '<h2>Result</h2><pre>';  
    	print_r($result);  
    	echo '</pre>'; 	 
    ?> 
    


    二、使用wsld
    服务端 serve.php

    <?php  
    	//包函nusoap.php  
    	require_once('./lib/nusoap.php');  
    	//新建一个soap服务  
    	$server = new soap_server();  
    	$server->soap_defencoding = 'UTF-8';
    	//$ser->decode_utf8 = false;
    	$server->xml_encoding = 'UTF-8';
    	//初始化支持wsdl  
    	$server->configureWSDL('hellowsdl2', 'hellowsdl2');  
    	//定义数据结构来接收数据  
    	$server->wsdl->addComplexType(  
    		 'Person',  
    		 'complexType',  
    		 'struct',  
    		 'all',  
    		 '',  
    		 array(  
    			 'firstname' => array('name' => 'firstname', 'type' => 'xsd:string'),//后面的type定义数据的类型,这个是string  
    			 'age' => array('name' => 'age', 'type' => 'xsd:int'),//后面的type定义数据的类型,这个是int  
    			 'gender' => array('name' => 'gender', 'type' => 'xsd:string')//后面的type定义数据的类型,这个是string  
    		 )  
    	);  
    	$server->wsdl->addComplexType(  
    		 'SweepstakesGreeting',  
    		 'complexType',  
    		 'struct',  
    		 'all',  
    		 '',  
    		 array(  
    		 'greeting' => array('name' => 'greeting', 'type' => 'xsd:string'),  
    		 'winner' => array('name' => 'winner', 'type' => 'xsd:string')  
    		 )  
    	);  
    	//服务器定义的soap调用方法  
    	$server->register('hello',                    // 方法名字hello,方法就在下面  
    		 array('person' => 'tns:Person'),          // 客户端传来的变量  
    		 array('return' => 'tns:SweepstakesGreeting'),    //返回参数  
    		 'urn:hellowsdl2',                         // soap名  
    		 'urn:hellowsdl2#hello',                   // soap的方法名  
    		 'rpc',                                    // 使用的方式  
    		 'encoded',                                // 编码  
    		 'test'                                    // 存档  
    	);  
    	//定义上面注册过的函数hello  
    	function hello($person) {  
    		 $greeting = 'Hello, ' . $person['firstname'] .'. It is nice to meet a ' . $person['age'] . ' year old ' . $person['gender'] . '.';  
    		  
    		 $winner =  'Scott';  
    		//要返回的数据  
    		return array(  
    			'greeting' => $greeting,  
    			'winner' => $winner  
    		);  
    	}  
    	// 请求时(试图)调用服务  
    	$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';  
    	$server->service($HTTP_RAW_POST_DATA);  
    ?> 
    

    服务端 client.php

    <?php  
    	//包函nusoap.php  
    	require_once('./lib/nusoap.php');  
    	//新建一个soap客户端,调用服务端提供的wsdl  
    	//$client = new soapclient('http://localhost/test/hellowsdl2.php?wsdl', true);  
    	$client = new soapclient('http://localhost/test/helloworld2.php');  
    	//查看一下是不是报错  
    	$err = $client->getError();  
    	if ($err) {  
    		 //显示错误  
    		 echo '<h2>Constructor error</h2><pre>' . $err . '</pre>';  
    	}  
    	//要向服务端要传的参数  
    	$person = array('firstname' => 'Willi', 'age' => 22, 'gender' => 'male');  
    	  
    	//调用服务端的方法  
    	$result = $client->call('hello', array('person' => $person));  
    	//错误审核  
    	if ($client->fault) {  
    		 echo '<h2>Fault</h2><pre>';  
    		 print_r($result);  
    		 echo '</pre>';  
    	} else {  
    		 $err = $client->getError();  
    		 if ($err) {  
    			echo '<h2>Error</h2><pre>' . $err . '</pre>';  
    		 } else {  
    			 echo '<h2>Result</h2><pre>';  
    			 print_r($result);  
    			 echo '</pre>';  
    		 }  
    	}  
    	//显示请求信息  
    	echo '<h2>Request</h2>';  
    	echo '<pre>' . htmlspecialchars($client->request, ENT_QUOTES) . '</pre>';  
    	//显示返回信息  
    	echo '<h2>Response</h2>';  
    	echo '<pre>' . htmlspecialchars($client->response, ENT_QUOTES) . '</pre>';  
    	//显示调试信息  
    	echo '<h2>Debug</h2>';  
    	echo '<pre>' . htmlspecialchars($client->debug_str, ENT_QUOTES) . '</pre>';  
    ?>  
    

      

  • 相关阅读:
    leetcode 48. Rotate Image
    leetcode 203. Remove Linked List Elements 、83. Remove Duplicates from Sorted List 、82. Remove Duplicates from Sorted List II(剑指offer57 删除链表中重复的结点) 、26/80. Remove Duplicates from Sorted ArrayI、II
    leetcode 263. Ugly Number 、264. Ugly Number II 、313. Super Ugly Number 、204. Count Primes
    leetcode 58. Length of Last Word
    安卓操作的一些问题解决
    leetcode 378. Kth Smallest Element in a Sorted Matrix
    android studio Gradle Build速度加快方法
    禁用gridview,listview回弹或下拉悬停
    Android Studio找不到FragmentActivity类
    安卓获取ListView、GridView等滚动的距离(高度)
  • 原文地址:https://www.cnblogs.com/rnckty/p/4097500.html
Copyright © 2011-2022 走看看