2015-10-15 188 views
0

如何使用多維數組作爲SOAP-client中的參數來進行soap請求?對於我的工作,我使用了NuSOAP v1.123。多維數組作爲SOAP請求的參數之一

下面用簡單的數組工作正常,但與多維不工作的代碼。

所以我的SOAP客戶端代碼:

$param_array = array(
    array(
     'var_1' => 1, 
     'var_2' => 2, 
    ), 
    array(
     'var_1' => 3, 
     'var_2' => 4, 
    ), 
); 

$result = $client->call('test', array('param_1' => 123, 'param_2' => $param_array)); 

我在SOAP服務器代碼:

$server->wsdl->addComplexType(
      'Return_Array', 
      'complexType', 
      'struct', 
      'all', 
      '', 
      array(
       'param_1'     => array('name' => 'param_1', 'type' => 'xsd:int', 'nillable' => 'true'), 
       'param_2'    => array('name' => 'param_2', 'type' => 'xsd:int', 'nillable' => 'true'), 
      ) 
     ); 

     $server->wsdl->addComplexType(
      'ReturnArray', 
      'complexType', 
      'array', 
      'all', 
      '', 
      array(), 
      array(), 
      'tns:Resurn_Array' 
     ); 

$server->wsdl->addComplexType(
    'Array', 
    'complexType', 
    'struct', 
    'all', 
    '', 
    array(
     'var_1' => array('name' => 'var_1', 'type' => 'xsd:int', 'nillable' => 'true'), 
     'var_2' => array('name' => 'var_2', 'type' => 'xsd:int', 'nillable' => 'true') 
); 

     $server->register('test', 
      array('param_1' => 'xsd:int', 'param_2' => 'tns:Array'), 
      array('return' => 'tns:ReturnArray') 
     ); 

    function test($param_1, $param_2) 
    { 
     $data = array(
      'test' => array(
      'param_1' => $param_2['var_1'], 
      'param_2' => $param_2['var_2'], 
      ) 
     ); 

     return $data; 
    } 

有了簡單的數組它工作正常,但與多維 - 不。如何處理它?

回答

0

我的功能的身體的第一個是不正確的,但現在它並不重要。 但是描述是。

這是描述的正確形式:

$server->wsdl->addComplexType(
    'get_string', 
    'complexType', 
    'struct', 
    'all', 
    '', 
    array(
     'text' => array('name' => 'text', 'type' => 'xsd:string', 'nillable' => 'true'), 
    ) 
); 

$server->wsdl->addComplexType(
    'get_array', 
    'complexType', 
    'array', 
    '', 
    'SOAP-ENC:Array', 
    array(), 
    array(array('ref' => 'SOAP-ENC:arrayType', 'wsdl:arrayType' => 'tns:get_string[]')), 
    'tns:get_string' 
);