Bonjour,
J'ai une applet sur une page web.
Je l'appelle via javascript en lui passant 3 paramètres:
Le 2 et 3 n'ont pas d'importance pour l'instant, le premier est un string en base 64 d'un fichier pdf (pour le forum raccourci en JVBERi0xLjQKJ[...]MAolJUVPRgoA).
var result = document.getElementById('SignPdf').SignPdf("JVBERi0xLjQKJ[...]MAolJUVPRgoA",null,null);
j'arrive côté java:
1 2 3 4 5 6 7 8 9 10 11
| public byte[] SignPdf(String streamStr, String reasonP, String locationP) {
this.lbl_Message.setText("avant base64 to bytes");
String streamStr64 = streamStr;
this.lbl_Message.setText(streamStr64);
BASE64Decoder decoder = new BASE64Decoder();
try {
unsignedBytes = decoder.decodeBuffer(streamStr64);
} catch (IOException ex) {
this.lbl_Message.setText(ex.getMessage()+" ||| "+ex.toString());
}
this.lbl_Message.setText("après base64 to bytes. nbr:"+unsignedBytes.length); |
j'ai plusieurs debug qui me permette de voir que je reste callé dans le décodage. rien ne se passe, je ne passe jamais dans mon catch.
la ligne
this.lbl_Message.setText(streamStr64);
me permet de voir que j'ai bien récupéré l'entierté du paramètre, exactement comme je l'ai passé!
Si maintenant je passe ceci en javascript:
var result = document.getElementById('SignPdf').SignPdf(null,null,null);
avec mon code java transformé comme ceci:
1 2 3 4 5 6 7 8 9 10 11 12
| public byte[] SignPdf(String streamStr, String reasonP, String locationP) {
this.lbl_Message.setText("avant base64 to bytes");
//String streamStr64 = streamStr;
String streamStr64 = "JVBERi0xLjQKJ[...]MAolJUVPRgoA";
this.lbl_Message.setText(streamStr64);
BASE64Decoder decoder = new BASE64Decoder();
try {
unsignedBytes = decoder.decodeBuffer(streamStr64);
} catch (IOException ex) {
this.lbl_Message.setText(ex.getMessage()+" ||| "+ex.toString());
}
this.lbl_Message.setText("après base64 to bytes. nbr:"+unsignedBytes.length); |
tout fonctionne bien, la transformation en bytes fonctionne!
je n'y comprends rien, pour moi ça devrait faire exactement la même chose.
Ma ligne de debug ou j'affiche dans un textField le contenu de ma variable prouve que je me retrouve exactement dans la même situation avant la transformation stream64->bytes
je deviens fou, aidez-moi
ps: j'ai aussi essayé d'utiliser une librairie externe pour décoder le base64 -> bytes, même comportement ça ne doit pas venir de là (ça fonctionne d'ailleurs dans un des 2 modes)
Partager