我一直在网上搜索这个,但我仍然不知道如何做到这一点。
我想知道的是如何使用SOAP
编写一个简单的请求,其中一个简单的数组作为填充了一些数据的参数传递。
我不在乎它是String array, Int array
还是其他什么。
我感到很沮丧,因为在我看来这应该很容易,而且在使用Soap时很难找到它。
我仍然有希望,地球上的某个人必须知道如何做到这一点。 非常感谢帮助。
答案 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) {
...
}