2012-11-27 37 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