推荐网址:
http://www.scottnichol.com/nusoapprogwsdl.htm
摘抄部分如下:
服务器端程序
客户端程序:
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 );
?>
// 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> ' ;
?>
// 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> ' ;
?>