Matlab-совместимый .wsdl файл - PullRequest
1 голос
/ 17 января 2012

Я пытаюсь сделать веб-сервис доступным для Matlab.Я могу вызвать его из PHP, но Matlab, похоже, не может разобрать определение.

??? Attempt to reference field of non-structure array.

Error in ==> createClassFromWsdl>parseWsdl at 72
se = defTypes.getExtensibilityElements().get(0);

Error in ==> createClassFromWsdl at 32
[R, schema] = parseWsdl(wsdlUrl);

WSDL-файл:

<?xml version ='1.0' encoding ='UTF-8' ?>
<definitions name='server3'
  targetNamespace='http://server.edu/php/soap_test/server3.wsdl'
  xmlns:tns='http://server.edu/php/soap_test/server3.wsdl'
  xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/'
  xmlns:xsd='http://www.w3.org/2001/XMLSchema'
  xmlns:soapenc='http://schemas.xmlsoap.org/soap/encoding/'
  xmlns:wsdl='http://schemas.xmlsoap.org/wsdl/'
  xmlns='http://schemas.xmlsoap.org/wsdl/'>



<xsd:complexType name="ActivityData">
  <xsd:sequence>
    <xsd:element minOccurs="1" maxOccurs="1" name="HomeId" type="string"/>
    <xsd:element minOccurs="1" maxOccurs="1" name="TStamp" type="string"/>
    <xsd:element minOccurs="1" maxOccurs="1" name="Description" type="string"/>
  </xsd:sequence>
</xsd:complexType>

<xsd:complexType name="ArrayOfActivityData">
  <xsd:sequence>
    <xsd:element minOccurs="0" maxOccurs="unbounded" name="keyval" type="tns:ActivityData"/>
  </xsd:sequence>
</xsd:complexType>  


<message name='getRangeRequest'>
  <part name='inHomeId' type='xsd:int'/>
  <part name='inStartDate' type='xsd:string'/>
  <part name='inEndDate' type='xsd:string'/>
</message>

<message name='getRangeResponse'>
  <part name='out1' type='ArrayOfActivityData'/>
</message>


<portType name='getRangePortType'>
  <operation name='getRange'>
    <input message='tns:getRangeRequest'/>
    <output message='tns:getRangeResponse'/>
  </operation>
</portType>

<binding name='getRangeBinding' type='tns:getRangePortType'>
  <soap:binding style='rpc' transport='http://schemas.xmlsoap.org/soap/http'/>
  <operation name='getRange'>
    <soap:operation soapAction='urn:xmethods-get-range#getRange'/>
    <input>
      <soap:body use='encoded' namespace='urn:xmethods-get-range' encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
    </input>
    <output>
      <soap:body use='encoded' namespace='urn:xmethods-get-range' encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
    </output>
  </operation>
</binding>

<service name='getRangeService'>
  <port name='getRangePort' binding='getRangeBinding'>
    <soap:address location='http://server.edu/php/soap_test/soap_server3.php'/>
  </port>
</service>

</definitions>

Чтение состояний документов Matlab:

The createClassFromWsdl function works with WSDL documents that comply with the WS-I 1.0 standard and use one of these forms: RPC-encoded, RPC-literal, Document-literal, or Document-literal-wrapped.

Моя установка Matlab работает с некоторыми примерами WSDL-файлов.Так что теперь я пытаюсь выяснить, что не так с моим.Предложения?

1 Ответ

0 голосов
/ 17 января 2012

FWIW: есть четыре вопроса:

1) записи 'xsd: complexType' должны находиться в разделе 'types'.

2) атрибут «service / port # binding» должен быть «tns: getRangeBinding».

3) 'binding / operation / soap: operation # soapAction' должно иметь значение 'urn: xmethods-get-range: getRange'

4) «связывание / операция / ввод / мыло: пространство имен body #» должно соответствовать # 3.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...