soapclient

时间:2025-02-07 10:50:20
  • <?php  
  • //包函  
  • require_once('./lib/');  
  • //新建一个soap服务  
  • $server = new soap_server();  
  • //初始化支持wsdl  
  • $server->configureWSDL('hellowsdl2''urn: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);  
  • ?>