java - 在 Java (Android) 中运行 javascript 文件

标签 java javascript android

我有一个网站,我想从 Android 应用程序登录,为了提交包含正确信息的 POST 请求,他们需要一些哈希值。该网站的实现方式是通过 JavaScript 文件。我尝试跟踪它,但无法得到与 native 网站相同的结果。

所以我决定下载他们的 javascript 文件并在 java 中运行它。

我的问题是我无法弄清楚如何在其文件中运行特定方法。

这是到目前为止我的代码,它非常简单。

public void hashIt(String valueForMethod1, String valueForMethod2){
    final ScriptEngineManager sem = new ScriptEngineManager();
    ScriptEngine engine = sem.getEngineByName("JavaScript");
    try {
        engine.eval(new java.io.FileReader("res/raw/theirFile.js"));
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (ScriptException e) {
        e.printStackTrace();
    }
}

任何帮助将不胜感激:)

谢谢

最佳答案

您可以使用Invocable来调用已加载的Javascript的方法

Invocable inv = (Invocable) engine;
inv.invokeFunction("foo", "bar"); // invoke foo("bar")

查看此page更深入的介绍

编辑

正如 Morrison Chang 所说,Android 上显然没有 javax.script 命名空间,因此您可以检查他在评论中给出的链接的线程。

关于java - 在 Java (Android) 中运行 javascript 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13592034/

相关文章:

java - 进行与 material.io 中所示相同的 fab Transformation exapnd 行为

java - AIDL服务和Android开源

javascript - 如何将数组传递给 javascript 中的 setAttribute 方法

javascript - 使用 keystone-storage-adapter-s3 后出现字段错误

javascript - 使用类名将文本添加到文本区域

android - 元素在移动设备上的大小调整不均

java - 通过 JSON 数据检索号码

java - 自动生成 Java Externalizable readExternal()/writeExternal() block

java - 根据调查构建人类可读的句子

android - 如何创建基于远程加载的图像大小自动调整大小的 Jetpack Compose 图像?