2010-11-24 69 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脚本?

相关问题