当wsdl中的元素类型为int时,是否有一种方法可以使用PHP SOAP Client传递null ?


is there a way to pass a null using PHP SOAP Client when element type is int in wsdl?

我正在使用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元素提交空值?

根据"来自卡拉马祖的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中的任何地方。

可以为ID元素添加xsi:nil="true"属性吗?就像

$myarray["ID"] = array(
            '_' => '',
            'xsi:nil' => "true");

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

相关文章: