我需要从客户端接收这样的 XML 输入(包含 2 个或更多元素):
<list>
<item>
<code xsi:type="xsd:string">123</code>
<product xsi:type="xsd:string">hello</product>
<level xsi:type="xsd:float">3</level>
</item>
<item>
<code xsi:type="xsd:string">1234</code>
<product xsi:type="xsd:string">hello2</product>
<level xsi:type="xsd:float">4</level>
</item>
</list>
Run Code Online (Sandbox Code Playgroud)
我可以定义一个像这样的复杂类型来描述服务方法的输入参数(使用数组(数组(...)?
$server->wsdl->addComplexType(
'姓名',
'复杂类型',
'结构',
'全部',
'',
数组(数组(
'代码' => 数组('名称' => '代码', '类型' => 'xsd:string'),
'产品' => 数组('名称' => '产品', '类型' => 'xsd:string'),
'level' => array('name' => 'level', 'type' => 'xsd:float')
))
);
$server->register('updateCode', // 方法名称
array('name' => 'tns:name'), // 输入参数
array('return' => 'xsd:string'), // 输出参数
'urn:updateCode', // 命名空间
'urn:updatecode#updateCode', //soapaction
'rpc', // 样式
'编码' // 使用
);
函数更新代码($输入){
返回计数($输入);
}
当我使用包含 2 个项目的 XML 时,我得到 2 作为响应;当我使用仅包含 1 个项目的 XML 时,我获得 3 作为响应(如每个项目的字段数量),而我期望结果为 1。
我不明白为什么会出现这种情况。
谢谢,
小智 1
问题有点老了,但我正在研究一些遗留的肥皂服务并遇到了它。
这个答案可能会有所帮助:https ://stackoverflow.com/a/1505720/1666805
问题 1) 您需要声明 2 个复杂类型,其中第一个是“列表”:
$soap->wsdl->addComplexType(
'list',
'complexType',
'array',
'',
'SOAP-ENC:Array',
array(
'list' => array(
'name' => 'list', 'type' => 'tls:item'
)
),
array(
array(
'ref'=>'tns:item',
'wsdl:arrayType'=>'tns:item[]'
)
),
'tns:item'
);
Run Code Online (Sandbox Code Playgroud)
第二个有参数“element”:
$soap->wsdl->addComplexType(
'item',
'element',
'struct',
'all',
'',
array(
'code' => array('name' => 'code', 'type' => 'xsd:string'),
'product' => array('name' => 'product', 'type' => 'xsd:string'),
'level' => array('name' => 'level', 'type' => 'xsd:float')
)
);
Run Code Online (Sandbox Code Playgroud)
从这里开始,使用上面的列表类型作为输入来注册函数应该很容易。
问题 2)我会查看传递给函数的实际数组而不是计数:
array(1) {
'item' =>
array(2) {
[0] =>
array(3) {
'code' =>
string(3) "123"
'product' =>
string(5) "hello"
'level' =>
double(3)
}
[1] =>
array(3) {
'code' =>
string(4) "1234"
'product' =>
string(6) "hello2"
'level' =>
double(4)
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3232 次 |
| 最近记录: |