首页 > 代码库 > Nusoap复杂对象的的webService制作

Nusoap复杂对象的的webService制作

推荐网址:
http://www.scottnichol.com/nusoapprogwsdl.htm
摘抄部分如下:
服务器端程序

<?php// Pull in the NuSOAP coderequire_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 functionfunction 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 coderequire_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 faultif ($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 responseecho ‘<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 messagesecho ‘<h2>Debug</h2>‘;echo ‘<pre>‘ . htmlspecialchars($client->debug_str, ENT_QUOTES) . ‘</pre>‘;?>

 

<script id="FoxLingoJs" type="text/javascript">// </script>