多维数组作为SOAP请求的参数之一

时间:2015-10-15 09:02:36

标签: php web-services soap soap-client soapserver

如何在SOAP-client中使用多维数组作为参数来制作soap-request?对于我的工作,我使用了NuSOAP v1.123。

以下代码在简单数组中工作正常,但多维却没有。

所以我在SOAP-client中的代码:

    $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;
    }

我在SOAP-server中的代码:

openssl_verify($data, $signature, $pubkeyid)

使用简单数组它可以正常工作,但是多维 - 不行。怎么处理呢?

1 个答案:

答案 0 :(得分:1)

我的第一个功能是不正确的,但是现在它并不重要。 但描述是。

这是正确的描述形式:

$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'
);