使用简单数组的简单SOAP请求

时间:2014-01-03 08:49:56

标签: arrays soap syntax request

我一直在网上搜索这个,但我仍然不知道如何做到这一点。 我想知道的是如何使用SOAP编写一个简单的请求,其中一个简单的数组作为填充了一些数据的参数传递。 我不在乎它是String array, Int array还是其他什么。

我感到很沮丧,因为在我看来这应该很容易,而且在使用Soap时很难找到它。

我仍然有希望,地球上的某个人必须知道如何做到这一点。 非常感谢帮助。

1 个答案:

答案 0 :(得分:0)

将数组作为参数传递给SOAP函数与将数组作为参数传递给任何其他函数完全相同。

您唯一需要注意的是在关联数组的情况下匹配键的名称。

例如,

我有一个web服务,它接受一个整数数组并返回一个填充了它们的正方形的数组。除了type元素之外,WSDL将类似于仅接受和返回整数的那个:

<wsdl:types>
<s:element name="SquareRequest">
    <s:complexType>
        <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="Values" type="tns:ArrayOfAnyType"/>
        </s:sequence>
    </s:complexType>
</s:element>
<s:complexType name="ArrayOfAnyType">
    <s:sequence>
        <s:element minOccurs="0" maxOccurs="unbounded" name="anyType" nillable="true"/>
    </s:sequence>
</s:complexType>
<s:element name="SquareResponse">
    <s:complexType>
        <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="SquareResult" type="tns:ArrayOfAnyType"/>
        </s:sequence>
    </s:complexType>
</s:element>

如果您使用PHP调用SOAP请求,那么您的内容将是:

$wsdl = "squares.wsdl";
$client = new SoapClient($wsdl,array('trace' => 1));
$params = array('Values' => array(0, 1, 2));
$result = $client->Squares($params);
/* result can be traversed as */
foreach($result->SquareResult->anyType as $place) {
    ...
}