Zend_Soap_Client как получить результат complexType - PullRequest
0 голосов
/ 27 июля 2011

Я пытаюсь вызвать веб-сервис, у которого complexTypes описываются как параметры ввода и вывода

<wsdl:types>
<s:schema elementFormDefault="qualified" targetNamespace="http://tempuri.org/">
  <s:element name="getTermsForService">
    <s:complexType>
      <s:sequence>
        <s:element minOccurs="0" maxOccurs="1" name="universalid" type="s:string" />
      </s:sequence>
    </s:complexType>
  </s:element>
  <s:element name="getTermsForServiceResponse">
    <s:complexType>
      <s:sequence>
        <s:element minOccurs="0" maxOccurs="1" name="getTermsForServiceResult" type="tns:ArrayOfString" />
      </s:sequence>
    </s:complexType>
  </s:element>
  <s:complexType name="ArrayOfString">
    <s:sequence>
      <s:element minOccurs="0" maxOccurs="unbounded" name="string" nillable="true" type="s:string" />
    </s:sequence>
  </s:complexType>
</s:schema>
</wsdl:types>

И

<wsdl:message name="getTermsForServiceSoapIn">
   <wsdl:part name="parameters" element="tns:getTermsForService" >
</wsdl:message>
<wsdl:message name="getTermsForServiceSoapOut">
  <wsdl:part name="parameters" element="tns:getTermsForServiceResponse" />
</wsdl:message>
<wsdl:portType name="Service1Soap">
<wsdl:operation name="getTermsForService">
  <wsdl:input message="tns:getTermsForServiceSoapIn" />
  <wsdl:output message="tns:getTermsForServiceSoapOut" />
</wsdl:operation>
</wsdl:portType>

Я подумал, что вызвать его будет так же легко, как:

$client = new Zend_Soap_Client($this->config->webserviceWsdlFile); 

try { 
     $result = $client->getTermsForService($_GET['universalid']); 
} catch (Exception $e) { 
    // @TODO catch correctly 
       var_dump($e); 
}

Но, похоже, это не так.Итак, что мне нужно сделать, чтобы получить правильный результат со строкой в ​​ответе ...

1 Ответ

0 голосов
/ 27 июля 2011

на самом деле это было действительно легко

$client = new Zend_Soap_Client($this->config->webserviceWsdlFile); 

try { 
   $result = $client->getTermsForService(array('universalid' => $_GET['universalid']);
   var_dump($result->getTermsForServiceResponse);
} catch (Exception $e) { 
// @TODO catch correctly 
   var_dump($e); 
}

дал правильный результат:

object(stdClass)[123]
  public 'string' => 
    array
      0 => string '0815' (length=10)
      1 => string '0816' (length=10)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...