有没有办法在wsdl中元素类型为int时使用PHP SOAP Client传递null?

时间:2013-06-13 19:03:11

标签: php soap

我正在使用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中的任何位置。

1 个答案:

答案 0 :(得分:0)

您可以将xsi:nil="true"属性添加到ID元素吗?像

这样的东西
$myarray["ID"] = array(
            '_' => '',
            'xsi:nil' => "true");

来源:http://radu.cotescu.com/how-to-send-null-values-in-soapui-requests/