2010-11-24 16 views
1

Je travaille sur une application avec un front-end javascript qui peut recevoir un tas d'octets du serveur (pour l'instant j'utilise ph (ph) chr() pour simuler certaines données).Transférer des données binaires de Javascript dans une applet Java via LiveConnect

Essayer de transmettre les données de javascript dans une applet à manipuler s'avère difficile. Comme les données peuvent avoir des valeurs nulles à mi-chaîne, on dirait qu'elles se terminent à la première entrée. Une fois que les données binaires touchent une variable javascript, l'encodage est affecté par certains octets (ou c'est peut-être un problème) de quelle façon je l'affiche)

Quoi qu'il en soit, quelles options ai-je pour prendre un bloc de données binaires, envoyé par un serveur et le mettre dans une applet Java à manipuler. Est-ce qu'une conversion en base64 (ou un autre encodage) est ma seule option si je veux maintenir l'intégrité des données?

Tout cela est nouveau pour moi, alors j'espère avoir bien compris.

Répondre

3

Ah le fléau de liveconnect.
Oui, vous avez besoin ou utilisez urlencode ou base64 pour obtenir vos données.

Même lorsque vous passez des données de JavaScript vers Flash (ou vers l'arrière), vous en avez besoin, car l'interface intermédiaire utilise des chaînes terminées par un caractère nul (ce qui est tout simplement stupide, je sais).

+0

Merci pour cela, mais il semble encore que je perds des choses en route. Je suis en train de coder avec encoderURI() du côté js (escape() est déprécié) et de décoder avec un URLDecoder du côté java. Selon les docs, ils semblent parfaitement correspondre. Un octet de problème est 0xC0, qui est décodé comme ffffffef ffffffbf ffffffbd. Des idées? – cmjreyes

+0

Il semble qu'une fois que Javascript le touche, je perds ces octets de nombre plus élevé. Si je le base64 à partir de mon serveur de test, il est très bien dans tout, mais ce n'est pas une possibilité. Je vais devoir trouver autre chose. – cmjreyes

+1

Eh bien, JavaScript utilise UTF16, vous devrez manuellement manipuler 'charCodeAt'. Ou essayez un peu de codage UTF8 comme 'encoderURI (escape (String.fromCharCode (" ... ")))' et inverser 'unescape (decodeURI (String.fromCharCode (" ... ")))' –

0

Je pense que l'architecture lorsque votre script Java reçoit des données binaires et les transmet à l'applet java n'est pas optimale. Pensiez-vous probablement à modifier l'applet pour le rendre directement au serveur et obtenir les données binaires? Sans script java?

+0

Il a traversé ma Cependant, l'applet n'est utilisé que dans certaines situations et ne peut même pas être utilisé (ou chargé) pour une session d'utilisateurs particulière. Il est essentiellement utilisé pour le traitement spécial de certaines données. – cmjreyes