2012-11-27 33 views
1

我有一个网站,我想从Android应用程序登录并为了提交正确的信息POST请求,他们需要一些哈希值。网站做它的方式是通过一个JavaScript文件。我试图通过它追踪,但我无法获得与本地网站相同的结果。在Java中运行JavaScript文件(Android)

所以我决定下载他们的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(); 
    } 
} 

任何帮助,将不胜感激:)

感谢

+0

请参阅:http://stackoverflow.com/questions/8374016/how-to-execute-javascript-on-android –

+0

为什么不写你自己的散列?由于它驻留在javascript中,所以原本已经包含在内。 –

回答

0

您可以使用Invocable调用已加载

的JavaScript的方法
Invocable inv = (Invocable) engine; 
inv.invokeFunction("foo", "bar"); // invoke foo("bar") 

看到这个page为更深入的介绍

编辑

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

+0

Android Java没有javax.script命名空间 - 因此没有Invocable –

+0

@MorrisonChang不知道这一点,谢谢:)编辑你的评论。 – Alex

+0

尽管Android Java本身并没有它,但可以导入javax.script的罐子,这是我做的:) – Rel