2010-02-12 10 views
14

Ho bisogno di codificare una stringa corta come base 64 in GWT e decodificare la stringa 64 di base sul server. Qualcuno ha una classe di utilità o una biblioteca per questo?Come faccio a codificare/decodificare le stringhe corte come Base64 usando GWT?

+1

possibile duplicato di [Decodifica dati Base64 in java] (http://stackoverflow.com/questions/469695/decode-base64-data-in-java) – Johan

+17

Le persone dovrebbero iniziare a notare che una domanda GWT ha probabilmente un contesto diverso da Java SE e non è un duplicato di una domanda di Java SE. Ciò che viene eseguito su Java SE richiede un trattamento aggiuntivo da collocare su GWT. –

risposta

12

È possibile utilizzare JavaScript nativo per questo sul client su tutti i browser eccetto IE ≤ 9. Sul server è possibile utilizzare one of the official classes.

Java/GWT:

private static native String b64decode(String a) /*-{ 
    return window.atob(a); 
}-*/; 

Encode è btoa.

0

La classe Base64 non può essere utilizzata sul lato client. Dovrebbe essere emulato.

+0

quale non si può usare? –

3

Si può avere uno sguardo a https://github.com/mooreds/gwt-crypto

Esso fornisce la codifica Base64 per GWT.

Base64.encode(string.getBytes()); 

Aggiungere l'importazione di seguito:

import com.googlecode.gwt.crypto.bouncycastle.util.encoders.Base64; 

Non dimenticate di aggiungere la seguente riga al modulo GWT XML:

<inherits name="com.googlecode.gwt.crypto.Crypto"/>  

Maven dipendenza

<dependency> 
    <groupId>com.googlecode.gwt-crypto</groupId> 
    <artifactId>gwt-crypto</artifactId> 
    <version>2.3.0</version> 
</dependency> 
5

Puoi usare la classe BaseEncoding prov ideato da Guava.

http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/io/BaseEncoding.html

Ad esempio:

try { 
    String encoded = BaseEncoding.base64().encode("foo".getBytes("UTF-8")) 
} catch (UnsupportedEncodingException e) { 
    GWT.log(e.getMessage()); 
} 

E non dimenticare di aggiungere la seguente riga al modulo GWT XML:

<inherits name="com.google.common.io.Io"/> 

La classe BaseEncoding può essere utilizzato su entrambe lato client GWT e lato server.

Problemi correlati