簡體   English   中英

在wsdl中將任何模式元素與PHP SoapServer一起使用

[英]Using the any schema element in wsdl with PHP SoapServer

我似乎無法使用PHP SoapServer在wsdl中使用XSD元素。 根據所讀內容,我看到了其他兩家公司如何實施“松散式” wsdl。 以下內容足以檢索和發送記錄信息。

<complexType name="Record">
    <sequence>
        <any namespace="##targetNamespace" minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
    </sequence>
</complexType>

不幸的是,似乎php SoapServer類會丟棄所有未嚴格定義的元素。 我得到的是創建請求上的空記錄,並在檢索/過濾器請求上發送空記錄,盡管這些字段在SoapServer處理之前很明顯。

如果我專門定義像這樣缺少的字段...

<complexType name="Record">
    <sequence>
        <element name="FirstName" type="xsd:string" minOccurs="0"/>
        <element name="LastName" type="xsd:string" minOccurs="0"/>
        <any namespace="##targetNamespace" minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
    </sequence>
</complexType>

那么一切都很好,這些字段將傳遞到客戶端或從客戶端傳遞出去。 我想念什么嗎? 我已經嘗試了所有名稱空間選項## any,## local等以及processContents選項。 我只希望能夠發送/返回記錄的額外字段,無論它們是否在架構中詳細說明。

您需要在傳遞給soap響應的返回對象中使用SoapVar對象。 在您的情況下,返回的對象應如下所示。

$recordObject = new stdClass;
$recordObject->prop1 = 'prop1';
$recordObject->prop2 = 'prop2';

$soapReturnObject = new SoapVar($recordObject, SOAP_ENC_OBJECT);

另請參見: SOAP:返回xsd:PHP中的任何元素的數組

暫無
暫無

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

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