2010-11-24 68 views
1

我正在處理一個JavaScript前端的應用程序,它可以從服務器接收一串八位字節(暫時我使用php的chr()模擬一些數據)。通過LiveConnect將JavaScript中的二進制數據傳遞到Java小程序

試圖將JavaScript中的數據傳遞到要操縱的小程序中證明是困難的。由於數據的中間字符串可能爲零,因此它看起來會在第一個空值進入時終止。它看起來像是一旦二進制數據觸及JavaScript變量,則編碼會混淆一些字節(或者這可能只是一個問題與我如何顯示它)

無論哪種方式,我有什麼選擇來獲取從服務器發送的二進制數據塊,並將其放入一個Java小程序來操縱。如果我想維護數據的完整性,是否只能轉換爲base64(或其他編碼)?

所有這些對我來說都是新鮮事物,所以希望我能清楚地理解事物。

回答

3

啊,liveconnect的禍根。
是的,您需要或使用urlencodebase64來獲取您的數據。即使在將東西從JavaScript傳遞給Flash(或後退)時,您也需要這樣做,因爲兩者之間的接口使用以空字符結尾的字符串(這只是愚蠢的,我知道)。

+0

非常感謝,但是它仍然看起來像我在路上丟失了一些東西。我在js端使用encodeURI()進行編碼(escape()被depricated),並使用java端的URLDecoder進行解碼。根據文檔,它們似乎完美匹配。一個問題字節是0xC0,它被解碼爲ffffffef ffffffbf ffffffbd。有任何想法嗎? – cmjreyes 2010-11-26 19:46:09

+0

它看起來像一旦JavaScript觸及它,我失去了更高的數字字節。如果我從我的測試服務器base64它,它可以處理所有事情,但這不是一種可能性。我得弄清楚別的東西。 – cmjreyes 2010-11-26 21:03:42

0

我認爲,當你的java腳本獲取二進制數據並將它傳遞給java applet時,架構不是最優的。你可能想過修改applet使其直接進入服務器並獲取二進制數據嗎?沒有任何Java腳本?

相關問題