2012-01-17 8 views
1

MatlabがWebサービスにアクセスできるようにしようとしています。私はPHPから呼び出すことができますが、Matlabは定義を解析できないようです。Matlabと互換性のある.wsdlファイル

??? 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ファイル:Matlabのドキュメントを読む

<?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のは、いくつかのサンプルWSDLファイルで作品をインストール

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. 

。だから私は何が間違っているのか把握しようとしています。提案?

答えて

0

FWIWは:4つの問題があります。

1) 'のxsd:complexTypeの' エントリー 'はタイプ' セクションにする必要があります。

2) 'service/port#binding'属性は 'tns:getRangeBinding'である必要があります。

3) '結合/操作/ SOAP:オペレーション#1のsoapActionは'

4) '結合/操作/入力/ソープ:ボディ#名前空間' ':XMethodsの-GET-範囲getRange URN' でなければならないはずマッチ#3。

関連する問題