Параметр soap не определен в WSDL - PullRequest
0 голосов
/ 03 февраля 2012

Hiall
Мне нужно подключиться к стороннему сервису мыла, поэтому я не могу контролировать 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 и отправить мой параметр?

1 Ответ

0 голосов
/ 03 февраля 2012

Получите копию WSDL, добавьте новое определение параметров, сохраните ее где-нибудь на сервере, где находится ваш клиент, и укажите клиенту SOAP на этот измененный WSDL. Но имейте в виду, что служба, к которой отправляется SOAP-запрос, может полностью игнорировать этот параметр или даже не сможет декодировать XML.

...