2012-02-03 50 views
0

Hiall
我必須連接到第三方soap服務,所以我無法控制wsdl。它包含以下定義:肥皂參數未在wsdl中定義

<s:schema elementFormDefault="qualified" targetNamespace="http://Shared.GlobalServices.DataTypes/PictureListRequest"> 
    <s:element name="Request" type="s0:PictureListRequest" /> 
    <s:complexType name="PictureListRequest"> 
    <s:sequence> 
     <s:element minOccurs="0" maxOccurs="1" name="Header" 
     type="s0:PictureListRequestHeader" /> 
     <s:element minOccurs="0" maxOccurs="1" name="Body" 
     type="s0:PictureListRequestBody" /> 
    </s:sequence> 
    </s:complexType> 
    <s:complexType name="PictureListRequestHeader"> 
    <s:sequence> 
     <s:element minOccurs="0" maxOccurs="1" name="AuthCode" 
     type="s:string" /> 
     <s:element minOccurs="0" maxOccurs="1" name="IpAddr" 
     type="s:string" /> 
     <s:element minOccurs="0" maxOccurs="1" name="DateTime" 
     type="s:string" /> 
    </s:sequence> 
    </s:complexType> 
    <s:complexType name="PictureListRequestBody"> 
    <s:sequence> 
     <s:element minOccurs="0" maxOccurs="1" name="DataAreaID" 
     type="s:string" /> 
     <s:element minOccurs="0" maxOccurs="1" name="DateUpdated" 
     type="s:string" /> 
     <s:element minOccurs="0" maxOccurs="1" name="TimeUpdated" 
     type="s:string" /> 
     <s:element minOccurs="1" maxOccurs="1" 
     name="CurrentPageIndex" type="s:int" /> 
     <s:element minOccurs="1" maxOccurs="1" name="ItemsOnPage" 
     type="s:int" /> 
    </s:sequence> 
    </s:complexType> 
</s:schema> 

我需要補充的是不是定義

$params = new stdClass(); 
     $params->Header = new stdClass(); 
     $params->Header->AuthCode = $this->authcode; 
     $params->Header->IpAddr = ""; 
     $params->Header->DateTime = ""; 
     $params->Body = new stdClass(); 
     $params->Body->DataAreaID = "hrp"; 
     $params->Body->DateUpdated = ""; 
     $params->Body->TimeUpdated = ""; 
     $params->Body->CurrentPageIndex = 1; 
     $params->Body->ItemsOnPage = 100; 
     $params->Body->AdditionalParameter = $value; // <-- undefined in wsdl 

一個參數,但這樣的參數在請求被忽略,它甚至沒有包含在XML。
是否可以強制soapclient包含併發送我的參數?

回答

0

獲取WSDL副本,添加新的參數定義,將其保存在客戶端駐留的服務器的某個位置,並將您的SOAP客戶端指向此修改的WSDL。 但是請注意,您發送SOAP請求的服務可能完全忽略此參數,甚至無法解碼XML。

+0

什麼是一個醜陋的黑客:)但它colud完成...是的,它被服務忽略...感謝您的幫助。 – posthy 2012-02-03 12:00:41