您好我正在编写一个PHP函数来与外部WSDL服务进行通信,目前我遇到了一个问题。有些dateTime元素要么需要有效的日期/时间,要么需要将NULL变量传递给它们。例如:
<s:element minOccurs="1" maxOccurs="1" name="dAppointment" type="s:dateTime"/>
PHP函数的简化版本如下:
$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;
当提交有效日期但是当通过以下错误尝试传递NULL变量时,该函数正常工作:
字符串&#39;&#39;不是有效的AllXsd值
建议在整个过程中将值转换为空字符串。变量是否需要以与使用SoapVar不同的方式设置为NULL,或者这可能是WSDL端的问题?
感谢您的帮助。
答案 0 :(得分:0)
因此,遇到此问题的每个人都可以找到解决方案:
local.wsdl
文件 <s:element minOccurs="1" maxOccurs="1" name="dAppointment" type="s:dateTime"/>
<s:element minOccurs="1" maxOccurs="1" name="dAppointment" type="s:dateTime" nillable="true" />
NULL
时,它将是NULL
。