2012-02-03 107 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