我希望在适配器端有客户端的ip地址,但我不知道这方面的worklight api是什么。我寻找它,但没有运气。
我在客户端代码上使用了这个api,如下所示
WL.Device.getNetworkInfo(function (networkInfo) {
console.log ("Ip address of device "+networkInfo.ipAddress);
});它工作得很好,我可以将它从客户端传递给适配器。但我只想知道是否可以在适配器过程中在服务器端实现相同的功能。
我还使用了以下代码
var request = WL.Server.getClientRequest();
var userAgent = request.getHeader("User-Agent");我们可以在这里使用此API在适配器过程中获得Ip地址吗?
发布于 2014-02-12 11:42:56
WL.Server.getClientRequest()将返回对HttpServletRequest Java对象(http://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletRequest.html)的引用。你可以使用Java来获取你需要的信息。
var request = WL.Server.getClientRequest();
request.getRemoteAddr()
request.getRemoteHost()请注意,如果客户端和WL服务器之间存在网关/代理(很可能存在),上面的API将为您提供有关代理的信息。如果您需要实际的设备IP,您可以使用
var request = WL.Server.getClientRequest();
var IPAddress = request.getHeader('x-forwarded-for'); 更新:
为了遍历标头枚举并获得请求头的完整列表,请使用以下代码:
var headers = {};
var request = WL.Server.getClientRequest();
var headerNames = request.getHeaderNames();
while (headerNames.hasMoreElements()){
var headerName = headerNames.nextElement();
var headerValue = request.getHeader(headerName);
headers[headerName] = headerValue;
}https://stackoverflow.com/questions/21720621
复制相似问题