【问题标题】:soap parameter not defined in wsdlwsdl中未定义soap参数
【发布时间】:2012-02-03 10:45:11
【问题描述】:

希尔
我必须连接到第 3 方肥皂服务,所以我无法控制 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包含并发送我的参数?

【问题讨论】:

    标签: php xml soap wsdl


    【解决方案1】:

    获取 WSDL 的副本,添加新的参数定义,将其保存在您的客户端所在的服务器上的某个位置,然后将您的 SOAP 客户端指向这个修改后的 WSDL。 但请注意,您向其发送 SOAP 请求的服务可能会完全忽略此参数,甚至无法解码 XML。

    【讨论】:

    • 多么丑陋的 hack :) 但它应该完成......是的,它被服务忽略了......谢谢你的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多