3

2个简单的问题:

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

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

4

5 回答 5

18

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

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

2)如果是这样,那是否意味着即使是对公共网站的 http 适配器请求也会说对雅虎网站的股票价格请求也会先通过 worklight 服务器,然后再通过雅虎网站?

是的。

我只想在没有“中间”服务器(即 workligth 服务器)的情况下直接访问 yahoo 网站

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

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 版本的名称空间。你可以使用jQueryor$做: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
于 2013-02-27T04:08:21.630 回答
0

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

于 2013-02-27T00:52:47.213 回答
0

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

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

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

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

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

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

于 2014-10-31T07:06:21.573 回答
0

Of course You can access it directly without calling any adapter functions using simple jquery ajax calls.

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

or

$.get(url, function() {
    alert( "success" );
})
.done(function() {
    alert( "second success" );
})
.fail(function() {
    alert( "error" );
})
.always(function() {
   alert( "finished" );
});
于 2014-05-09T17:31:46.827 回答
-1

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

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

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

于 2013-02-26T21:50:03.690 回答