多维数组作为 SOAP 请求的参数之一
Multidimensional array as one of parameter for SOAP request
如何在 SOAP 客户端中使用多维数组作为参数来进行 soap 请求?对于我的工作,我使用了 NuSOAP v1.123。
下面的代码适用于简单数组,但不适用于多维。
所以我在 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;
}
对于简单数组,它工作正常,但对于多维 - 则不然。如何处理?
我函数的第一个主体是不正确的,但现在它并不重要。
但是描述是。
这是正确的描述形式:
$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'
);
如何在 SOAP 客户端中使用多维数组作为参数来进行 soap 请求?对于我的工作,我使用了 NuSOAP v1.123。
下面的代码适用于简单数组,但不适用于多维。
所以我在 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;
}
对于简单数组,它工作正常,但对于多维 - 则不然。如何处理?
我函数的第一个主体是不正确的,但现在它并不重要。 但是描述是。
这是正确的描述形式:
$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'
);