【问题标题】:Through Java, make a call to Javascript functions on networked device?通过 Java,在联网设备上调用 Javascript 函数?
【发布时间】:2010-01-07 21:59:05
【问题描述】:

我正在联网系统上进行设备监控。我需要知道如何通过其 IP 地址对该设备进行 Javascript 调用以获取某些状态信息(该设备的状态仅可通过 Javascript API,而不是 SNMP 等)。我正在使用 Java。

添加:特定设备是 Amino 机顶盒。它有它所谓的 JMACX:JavaScript 媒体访问控制扩展 API 规范。它允许您在 HTML 文档中使用该 API 来获取有关设备的大量信息(cpu 使用情况、频道信息、远程控制选项等)。为了特定的监控目的,我需要在 Java 程序中获取这些信息。

也许可以使用 HTTP 请求?

任何意见将不胜感激。

谢谢,

史蒂夫

【问题讨论】:

  • 在这种情况下,您所说的 Javascript API 是什么意思?你能给我们举个例子吗?设备是否有嵌入式 Web 服务器,可以输出嵌入某些 Javascript 功能的 HTML 页面,还是什么?

标签: java javascript networking monitoring


【解决方案1】:

因此,它本质上是一个提供 HTML 页面的网络服务器?理论上,您可以使用URL#openStream() 获取任何网络资源的InputStream

但是你遇到了 Javascript 的一个主要问题。它只在本地机器上运行。您最终可以在 HTML parser 的帮助下从 HTML 页面中提取 JavaScript 函数,并在 javax.script API 的帮助下调用它们,但它们将仅在 您的机器上执行(至少,机器Java 代码运行的地方),而不是在远程机器上。

【讨论】:

    【解决方案2】:

    我一直在 Java 中使用 Rhino,它运行良好。您应该能够将 Javascript API 加载到上下文中,然后创建函数来使用/调用该 API。

    http://www.mozilla.org/rhino/

    【讨论】:

    • 您能详细说明一下吗?我一直在查看网络上的文档,似乎在使用上下文方面几乎没有发现。我将如何使用它在联网设备上调用 Javascript?
    • 如果你只需要能够使用和调用javascript,那么rhino是一个很好的解决方案。您加载 JS api,大概在本地或远程的 JS 文件中,然后您可以在其中调用函数等。如果 API 假设存在某些对象,您可能必须创建一些模拟对象。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-10
    • 1970-01-01
    • 1970-01-01
    • 2016-08-12
    • 1970-01-01
    • 2012-07-10
    相关资源
    最近更新 更多