我正在使用PHP SOAP客户端提交一个包含wsdl中定义的ID元素的对象,如下所示:
<s:element minOccurs="1" maxOccurs="1" name="ID" type="s:int"/>
我正在向PHP SOAP客户端传递一个包含ID值的数组,如下所示:
ID' => string '' (length=0)
这会导致SOAP客户端的xml如下所示:
<ns1:ID>0</ns1:ID>
我希望如此:
<ns1:ID></ns1:ID>
我已经尝试将ID的数组值设置为null,但它仍会生成值为0的xml。
$myarray["ID"] = null;
问题: 有没有办法使用PHP SOAP客户端为int元素提交null值?
更新 正如'来自卡拉马祖的Nate'所暗示的,我改变了$ myarray [“ID”] = null;到:
$myarray["ID"] = array('_' => '','xsi:nil' => "true");
这导致了一个数组元素'ID',它是另一个像这样的数组:
'ID' =>
array (size=2)
'_' => ''
'xsi:nil' => string 'true'
现在xml看起来像:
<ns1:ID>1</ns1:ID> //where did the 1 come from?
为了清楚起见,我正在使用PHP SOAP客户端:
$client->SomeFunction(array('application' => $myarray));
传递给SOAP客户端的数组与用作XML元素名称的元素名称相关联,所以我猜测传递的数组的ID元素中的数组是以某种方式返回1.但无论如何'的xsi:NI;”不会出现在XML中的任何位置。
答案 0 :(得分:0)
您可以将xsi:nil="true"
属性添加到ID元素吗?像
$myarray["ID"] = array(
'_' => '',
'xsi:nil' => "true");
来源:http://radu.cotescu.com/how-to-send-null-values-in-soapui-requests/