簡體   English   中英

在 PHP SOAP 中將 NULL 字符串傳遞給 WSDL

[英]Passing a NULL string to WSDL in PHP SOAP

您好,我正在編寫一個 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 變量時,返回:

字符串 '' 不是有效的 AllXsd 值

建議該值正在轉換為空字符串。 變量是否需要像使用 SoapVar 那樣以不同的方式設置為 NULL 或者這可能是 WSDL 端的問題?

謝謝你的幫助。

所以,每個遇到這個問題的人,解決方案:

  • 打開您的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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM