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 を使用してみましたが、どちらも機能しませんでした。ここでユーザーエラーだと確信しています!=)
私がする必要があるのは次のとおりです。
このサービスを呼び出します: https://urlgoeshere.com.com/Payments_UISupport_HTTPRouter/RecaCompFacadeService/RecaCompFacadeService.wsdl
false ブール値を渡す
そのサービス内でこのメソッドをヒットします: 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']
});