NuSoap,XML为空,无法解析

时间:2015-06-11 09:42:24

标签: php xml web-services wsdl nusoap

首先,我必须说我对使用NuSOAP的基于WSDL的Web服务完全不熟悉。我试图从我的肥皂服务器返回一个朋友列表数组。请在下面找到我的代码清单:

服务器:

//File includes omitted

function getFriendList($test = ''){

   $results = array();

   $results[] = array('name' => 'XXXXA1', 'surname' => 'XXXXA2');
   $results[] = array('name' => 'XXXXXB1', 'surname' => 'XXXXB2');
   $results[] = array('name' => 'XXXXXC1', 'surname' => 'XXXXC2');

   return $results;
}

//Create server instance
$server = new soap_server();

//Configure our WSDL
$server->configureWSDL('server', 'urn:server');

//Add our Complex Type  data type since we want to return an array
$server->wsdl->addComplexType(
   'Friend',
   'complexType',
   'struct',
   'all',
   '',
   array(
     'name' => array('name' => 'name', 'type' => 'xsd:string'),
     'surname' => array('name' => 'surname', 'type' => 'xsd:string')
    ) 
  );

//Register our array as a response
$server->wsdl->addComplexType(
  'FriendArray',
  'complexType',
  'array',
  '',
  'SOAP-ENC:Array',
  array(),
  array(
    array('ref' => 'SOAP-ENC:arrayType', 'wsdl:arrayType' => 'tns:Friend[]')
   ),
  'tns:Friend'
);

//Register the actual function that retuns the array but in the 
//return n field specify the complex type of array we added onto the wsdl
 $server->register('getFriendList',
   array('test' => 'xsd:string'),
   array('return' => 'tns:FriendArray'),
   'urn:server',
   'urn:server#getFriendList',
   'document',
   'encoded',
   'Fetch a list of friends as an array. If you\'re not here sorry.'  
  );

//Serve the service
$server->service($HTTP_RAW_POST_DATA = (!isset($HTTP_RAW_POST_DATA)) ? $HTTP_RAW_POST_DATA : '');

有了这个,我希望我做的一切都正确。我按照标准程序使其工作但是静脉。

在客户端,我使用了wsdl中的soap地址url并附加了“?wsdl”,因此它动态地为我提供了wsdl文件。

示例:

 //Client call
 $client = new nusoap_client("http://soapserver.dev/webroot/part_three/server.php?wsdl", true);

我还在我的客户端对象上添加了一些口哨和铃铛,如下所示:

 $client->soap_defencoding = 'UTF-8';
 $client->decode_utf8 = false;

这似乎没有任何帮助。我之前遇到过一个问题,因为我的函数不接受任何参数,我的服务因为没有传递任何参数来说明我的$ client->调用($ name,$ in,$ out)。我最终提供了一个空数组,我收到了这个错误。

这可能与寄存器功能的rpc / document参数类型有关吗?

即使使用我从服务器网址保存的wsdl文件,我也遇到了同样的错误。

有人可以帮帮我吗?请!

0 个答案:

没有答案