在PHP SOAP中将空字符串传递给WSDL

在PHP SOAP中将空字符串传递给WSDL,php,web-services,soap,wsdl,Php,Web Services,Soap,Wsdl,您好,我正在编写一个PHP函数来与外部WSDL服务通信,目前遇到了一个问题。有些dateTime元素需要有效的日期/时间,或者需要传递一个空变量给它们。例如: <s:element minOccurs="1" maxOccurs="1" name="dAppointment" type="s:dateTime"/> 当提交有效日期时,该函数工作正常,但当尝试通过以下错误传递空变量时,返回错误: 字符串“”不是有效的AllXsd值 表示该值正在沿途转换为空字符串。变量是否需要像使用S

您好,我正在编写一个PHP函数来与外部WSDL服务通信,目前遇到了一个问题。有些dateTime元素需要有效的日期/时间,或者需要传递一个空变量给它们。例如:

<s:element minOccurs="1" maxOccurs="1" name="dAppointment" type="s:dateTime"/>
当提交有效日期时,该函数工作正常,但当尝试通过以下错误传递空变量时,返回错误:

字符串“”不是有效的AllXsd值

表示该值正在沿途转换为空字符串。变量是否需要像使用SoapVar那样以不同的方式设置为NULL,或者这可能是WSDL端的一个问题


感谢您的帮助。

因此,所有遇到此问题的人,解决方案:

  • 打开您的
    local.wsdl
    文件
  • 找到你的领域:

  • 将其更改为:

  • 现在,当您将变量设置为
    NULL
    时,它将是
    NULL
$client = new SoapClient($this->SOAPURL, array("connection_timeout" => 20));

$params = new stdClass();
$params->dAppointment = NULL;
settype($params->dAppointment, "null");  // Trying to confirm

$client->AddJob($params)->AddJobResult;