使用Sencha Cmd应用程序调用外部Web服务

时间:2014-09-28 20:40:02

标签: web-services rest extjs sencha-cmd

我用Sencha Cmd创建了一个ExtJS 5应用程序。 我将在一个tomcat服务器中部署此应用程序,其中有一些REST Web服务。 我需要使用这些Web服务,但是当我使用“sencha app watch”(在端口1841上)运行应用程序时,它找不到服务,因为它们位于不同的服务器上(tomcat位于不同的端口上)。 如何在Sencha CMD中使用“外部”Web服务? 谢谢 斯特凡诺

1 个答案:

答案 0 :(得分:1)

以下是一些可用选项:

选项1 代理Web服务

您可以在本地计算机上创建服务,其中sencha应用程序创建Web请求,然后转到目标远程服务。这称为代理服务。

本质上,代理服务将接收请求并将其重新提交到所需的目标远程计算机。

有一个php example here

还有一个C# web request example here(虽然这个c#示例并不是您所需要的。需要提交的Web请求的基础是在此代码中。)

选项2 JsonP

顶部的另一个选项是,如果其他计算机上的Web服务支持jsonp,则应该可以访问它们。但是,jsonp只支持get,所以如果你有一个完整的休息实现,一些服务可能不会工作。

More information on jsonp

JsonP的一个extjs请求示例:

Ext.data.JsonP.request({
            'url': 'url',
            params: {
                'param1': 'value'
            },
            success: function (result, request) {
                //success
            }
        });

选项3 在单个端口上托管多个应用/路径

但是,因为看起来tomcat服务器实际上可能在同一台机器上。有没有办法通过tomcat托管Web服务和应用程序路径?

看起来,例如,jetty可以选择托管two apps on the same port

选项4 启用CORS

您可以根据所使用的体系结构/框架在其余应用程序上启用跨源资源共享。

浏览器基本上会先发送请求以查看它是否可以访问该资源。然后服务器将响应允许的原始域。启用CORS后,可以在两个不同的端口/服务器之间授予访问权限

Great site on CORS with instructions for enabling on most basic setups

以下是示例documentation for spring