0

ExtJS は初めてで、Flex 開発者です。Flex アプリにあるページのモックアップを作成しようとしています。サーバー (ExtJS アプリと同じドメイン) にアクセスするための基本的なサービス呼び出しを実行し、データを Store に追加しようとしています。これは、dataGrid に取り込まれます。

オンラインでチュートリアルを行いましたが、Flex アプリからサービスを使用するように変更しようとしています。サービス呼び出しを行うことができ、成功の応答を得ることができます。ただし、ブラウザーに URL を貼り付けたときに得られる応答のようです (これは WSDL です)。

サービス内の実際のメソッドにヒットしてデータを返すわけではありません。シンプルな soapclient.js JS プロジェクトを実行し、そのツールを使用してデータを取得できましたが、Ajax を使用してデータを取得できません。私は何か単純な間違いをしていると思いますが、それを理解できません。

    Ext.define('DG.store.PhoneCalls', {

    extend: 'Ext.data.Store',

    model: 'DG.model.PhoneCall',

    autoLoad: true,



    proxy: {

    type: "ajax",

    dataType: 'xml',

    contentType: 'text/xml; charset=utf-8',

    data: '<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">  <SOAP-ENV:Header>    <ns0:HeaderID xmlns:ns0="http://urlgoeshere.com/">      <ns0:string>thisisastring</ns0:string>    </ns0:HeaderID>  </SOAP-ENV:Header>  <SOAP-ENV:Body>    <tns:getRecaPayments xmlns:tns="http://urlgoeshere.com/">      <arg0>false</arg0>    </tns:getRecaPayments>  </SOAP-ENV:Body></SOAP-ENV:Envelope>',

    url: "https://urlgoeshere.com.com/Payments_UISupport_HTTPRouter/RecaCompFacadeService/RecaCompFacadeService.wsdl",

    reader: {

        type: 'xml',

        root: 'return',

        record: 'contents'

    },

    afterRequest:function(req, res) {

        console.log("Result: " + req.operation.response);

    }

}

});

デバッグすると、これはこのサービスのメソッドにヒットしていません。そのサービスで使用可能なすべてのメソッドを示す WSDL 応答全体を返します。

Flex では問題ありません。このアプリは同じドメインにあるため、問題はありません。ExtJS で soap を使用してみましたが、どちらも機能しませんでした。ここでユーザーエラーだと確信しています!=)

私がする必要があるのは次のとおりです。

  1. このサービスを呼び出します: https://urlgoeshere.com.com/Payments_UISupport_HTTPRouter/RecaCompFacadeService/RecaCompFacadeService.wsdl

  2. false ブール値を渡す

  3. そのサービス内でこのメソッドをヒットします: getRecaPayments

このサービスは、次のような一連のデータを返します。

<return>
 <contents>
  <name>Joe</name>
  <ssn>111112222</ssn>
 </contents>
 <contents>
  <name>Bob</name>
  <ssn>222342222</ssn>
 </contents>
 <contents>
  <name>Jan</name>
  <ssn>555443333</ssn>
 </contents>
 </return>

ここに私のモデル PhoneCall があります:

Ext.define('DG.model.PhoneCall', {
    extend: 'Ext.data.Model',
    fields: ['name', 'ssn']
});
4

1 に答える 1

0

いくつかの調査を行ったところ、ドキュメント内に必要な 2 つの SOAP クラスが見つかりました。

これらのファイルは実際には src/data/soap ディレクトリに含まれていません...

http://docs.sencha.com/extjs/4.2.2/source/Proxy3.html http://docs.sencha.com/extjs/4.2.2/source/Reader3.html#Ext-data-soap-Reader

ここでは、これまで以上に詳しく説明しています。

http://docs.sencha.com/extjs/4.2.2/#/guide/soap

于 2014-03-12T22:09:16.040 に答える