【问题标题】:Worklight http adapter questionsWorklight http 适配器问题
【发布时间】:2013-02-12 10:34:03
【问题描述】:

2 个简单的问题:

  1. 所有通过 http 适配器的 http 请求是否首先通过 worklight 服务器?

  2. 如果是这样,这是否意味着即使是对公共网站的 http 适配器请求也会说对雅虎网站的股票价格请求也会先通过 worklight 服务器,然后再通过雅虎网站?如果是这样,那么我如何在不通过 worklight 服务器的情况下发出 http 请求?我只想在没有“中间”服务器(即 workligth 服务器)的情况下直接访问 yahoo 网站

【问题讨论】:

    标签: ibm-mobilefirst worklight-adapters


    【解决方案1】:

    1) 是否所有通过 http 适配器的 http 请求都通过 worklight 服务器优先?

    是的。 Worklight 适配器通过使用Mozilla Rhino 在Worklight Server 上执行JavaScript 来工作。您可以在IBM Worklight Getting Started Modules 中阅读有关适配器的更多信息。查看Modules 5 and 6 以了解适配器的具体细节。还有一些代码示例,您可以在接下来尝试。 API 文档位于IBM InfoCenter。还有一个Developer Works article 讨论了您可能会觉得有用的适配器。

    2) 如果是这样,这是否意味着即使是对公共网络的 http 适配器请求 网站说向雅虎网站索要股价的请求也会通过 worklight 服务器先放在 yahoo 网站旁边?

    是的。

    我只想直接访问 yahoo 网站而不使用 “中间”服务器(即 workligth 服务器)

    IBM Worklight 附带 jQuery,您可以使用 ajax method。这是一个例子:

    WLJQ.ajax( "http://finance.yahoo.com/d/quotes.csv?s=DOW+MSFT+AAPL+GOOG&f=snl1" )
    .done(function (data) {
        console.log(data);
    });
    

    请注意,WLJQ 是 Worklight 发布的 jQuery 版本的名称空间。您可以通过以下方式使用jQuery$var $ = WLJQ;var jQuery = WLJQ;

    你应该得到这样的东西:

    "DOW","Dow Chemical Comp",30.89
    "MSFT","Microsoft Corpora",27.37
    "AAPL","Apple Inc.",448.97
    "GOOG","Google Inc.",790.13
    

    【讨论】:

      【解决方案2】:

      如果您在客户端使用适配器 API,那么您的请求将通过 Worklight 服务器。您仍然可以从客户端发出 AJAX 请求并跳过服务器。本质上,您将以与在 Cordova 中相同的方式发出服务器请求,这意味着使用白名单来允许您的请求访问第三方服务器。

      【讨论】:

        【解决方案3】:

        当然,您可以直接访问它,而无需使用简单的 jquery ajax 调用来调用任何适配器函数。

        $.ajax({
               url: url,
               data: data,
               success: success,
               dataType: dataType
        });
        

        $.get(url, function() {
            alert( "success" );
        })
        .done(function() {
            alert( "second success" );
        })
        .fail(function() {
            alert( "error" );
        })
        .always(function() {
           alert( "finished" );
        });
        

        【讨论】:

        • 如果您不使用 Worklight 应用程序,那就太好了;在 Worklight 的上下文中,您必须了解不通过 Worklight Server 的后果,@candreu 已经在下面回答了这个问题。这个答案没有多大价值。
        • 如果您使用 worklight,则 xml 到 json 的转换、负载平衡、每秒并发节点连接和超时场景将在适配器服务中处理。如果在这些场景中需要任何更改,适配器将帮助您无需更改应用程序中的任何内容。
        【解决方案4】:

        是否所有的 http 请求都通过 http 适配器通过 worklight 服务器优先?

        绝对不是,这完全取决于你。如果您使用的是 HTTP 适配器,那么 HTTP 请求将从 Worklight Server 发起,它会为您返回响应。

        如果是这样,这是否意味着即使是对公共网络的 http 适配器请求 网站说向雅虎网站索要股价的请求也会通过 worklight 服务器首先然后旁边的雅虎网站?如果是这样,那么如何 我是否可以在不通过 worklight 服务器的情况下发出 http 请求?一世 只想直接去雅虎网站没有“中级” 服务器(即工作灯服务器)

        如果您使用的是 HTTP 适配器,那么它将按照第一个答案通过 Worklight Server。

        如果您不想要中间服务器,那么您可以使用传统的方式来执行 HTTP 请求,就像您通过 Javascript /Ajax 层或本机 (Android/iOS/Windows..) 执行的方式一样

        当涉及到 Worklight 用来确保从注册设备发起请求的安全性时,适配器非常有用 - 身份验证是通过交换设备令牌等来完成的。

        【讨论】:

          【解决方案5】:

          我认为您错过了关于 WL 中适配器架构的重要一点。适配器存在于服务器中,因此根据定义,您使用它发出的任何请求都将“通过”服务器。但是,信息不会通过您的 WAS(或 Tomcat)服务器。

          您是否有不想使用适配器的原因?我建议使用它,因为它可以更轻松地从 RESTful http 调用或数据库查询中提取数据。

          如果您确实想绕过适配器,则存在跨域授权问题。我在这方面没有太多经验,但你可以使用 jQuery.ajax() 之类的东西来解决它。

          【讨论】:

          • 请教一个问题,worklight 服务器是 WAS 中的一个 Web 应用程序,因此它怎么可能不通过 WAS?
          • Worklight 服务器是在 WAS 或 Tomcat 中运行的 JEE 应用程序,因此使用适配器 API 的请求确实通过 WAS/Tomcat 进行。我不知道 Ralph 的意思,这似乎是错误的,因此是 -1。
          猜你喜欢
          • 2015-10-25
          • 2016-01-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-05-31
          相关资源
          最近更新 更多