Nusoap复杂对象的的webService制作

推荐网址:
http://www.scottnichol.com/nusoapprogwsdl.htm
摘抄部分如下:
服务器端程序
<? php
//  Pull in the NuSOAP code
require_once ( ' nusoap.php ' );
//  Create the server instance
$server   =   new  soap_server();
//  Initialize WSDL support
$server -> configureWSDL( ' hellowsdl2 ' ,   ' urn:hellowsdl2 ' );
//  Register the data structures used by the service
$server -> wsdl -> addComplexType(
    
' Person ' ,
    
' complexType ' ,
    
' struct ' ,
    
' all ' ,
    
'' ,
    
array (
        
' firstname '   =>   array ( ' name '   =>   ' firstname ' ,   ' type '   =>   ' xsd:string ' ) ,
        
' age '   =>   array ( ' name '   =>   ' age ' ,   ' type '   =>   ' xsd:int ' ) ,
        
' gender '   =>   array ( ' name '   =>   ' gender ' ,   ' type '   =>   ' xsd:string ' )
    )
);
$server -> wsdl -> addComplexType(
    
' SweepstakesGreeting ' ,
    
' complexType ' ,
    
' struct ' ,
    
' all ' ,
    
'' ,
    
array (
        
' greeting '   =>   array ( ' name '   =>   ' greeting ' ,   ' type '   =>   ' xsd:string ' ) ,
        
' winner '   =>   array ( ' name '   =>   ' winner ' ,   ' type '   =>   ' xsd:boolean ' )
    )
);
//  Register the method to expose
$server -> register( ' hello ' ,                      //  method name
     array ( ' person '   =>   ' tns:Person ' ) ,            //  input parameters
     array ( ' return '   =>   ' tns:SweepstakesGreeting ' ) ,      //  output parameters
     ' urn:hellowsdl2 ' ,                           //  namespace
     ' urn:hellowsdl2#hello ' ,                     //  soapaction
     ' rpc ' ,                                      //  style
     ' encoded ' ,                                  //  use
     ' Greet a person entering the sweepstakes '          //  documentation
);
//  Define the method as a PHP function
function  hello( $person ) {
    
$greeting   =   ' Hello,  '   .   $person [ ' firstname ' .
                
' . It is nice to meet a  '   .   $person [ ' age ' .
                
'  year old  '   .   $person [ ' gender ' .   ' . ' ;
    
    
$winner   =   $person [ ' firstname ' ==   ' Scott ' ;

    
return   array (
                
' greeting '   =>   $greeting ,
                
' winner '   =>   $winner
                );
}
//  Use the request to (try to) invoke the service
$HTTP_RAW_POST_DATA   =   isset ( $HTTP_RAW_POST_DATA ?   $HTTP_RAW_POST_DATA   :   '' ;
$server -> service( $HTTP_RAW_POST_DATA );
?>

客户端程序:
<? php
//  Pull in the NuSOAP code
require_once ( ' nusoap.php ' );
//  Create the client instance
$client   =   new  soapclient( ' http://localhost/phphack/hellowsdl2.php?wsdl ' ,   true );
//  Check for an error
$err   =   $client -> getError();
if  ( $err ) {
    
//  Display the error
     echo   ' <h2>Constructor error</h2><pre> '   .   $err   .   ' </pre> ' ;
    
//  At this point, you know the call that follows will fail
}
//  Call the SOAP method
$person   =   array ( ' firstname '   =>   ' Willi ' ,   ' age '   =>   22 ,   ' gender '   =>   ' male ' );
$result   =   $client -> call( ' hello ' ,   array ( ' person '   =>   $person ));
//  Check for a fault
if  ( $client -> fault) {
    
echo   ' <h2>Fault</h2><pre> ' ;
    
print_r ( $result );
    
echo   ' </pre> ' ;
else  {
    
//  Check for errors
     $err   =   $client -> getError();
    
if  ( $err ) {
        
//  Display the error
         echo   ' <h2>Error</h2><pre> '   .   $err   .   ' </pre> ' ;
    } 
else  {
        
//  Display the result
         echo   ' <h2>Result</h2><pre> ' ;
        
print_r ( $result );
    
echo   ' </pre> ' ;
    }
}
//  Display the request and response
echo   ' <h2>Request</h2> ' ;
echo   ' <pre> '   .   htmlspecialchars ( $client -> request ,  ENT_QUOTES)  .   ' </pre> ' ;
echo   ' <h2>Response</h2> ' ;
echo   ' <pre> '   .   htmlspecialchars ( $client -> response ,  ENT_QUOTES)  .   ' </pre> ' ;
//  Display the debug messages
echo   ' <h2>Debug</h2> ' ;
echo   ' <pre> '   .   htmlspecialchars ( $client -> debug_str ,  ENT_QUOTES)  .   ' </pre> ' ;
?>

你可能感兴趣的:(webservice)