博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
推荐网址:
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>';
?>

posted on 2009-09-24 13:54  Likwo  阅读(1556)  评论(0编辑  收藏  举报