2010-02-12 12 views
14

Necesito codificar una cadena corta como base 64 en GWT y decodificar la cadena base 64 en el servidor. ¿Alguien tiene clase de utilidad o biblioteca para esto?¿Cómo codifico/decodifico cadenas cortas como Base64 usando GWT?

+1

posible duplicado de [Datos de Decode Base64 en java] (http://stackoverflow.com/questions/469695/decode-base64-data-in-java) – Johan

+17

La gente debería comenzar a notar que una pregunta de GWT probablemente tiene un contexto diferente desde Java SE y no es un duplicado de una pregunta Java SE. Lo que se ejecuta en Java SE requiere un tratamiento adicional para GWT. –

Respuesta

12

Puede utilizar JavaScript nativo para esto en el cliente en todos los navegadores excepto IE ≤ 9. En el servidor puede usar one of the official classes.

Java/GWT:

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

Codificar es btoa.

0

La clase Base64 no se puede utilizar en el lado del cliente. Tendría que ser emulado.

+0

cuál no se puede usar? –

3

Usted puede echar un vistazo a https://github.com/mooreds/gwt-crypto

Proporciona la codificación base64 a GWT.

Base64.encode(string.getBytes()); 

Añadir la importación a continuación:

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

No se olvide de añadir la siguiente línea a su módulo de GWT XML:

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

Maven dependencia

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

Puede usar la clase BaseEncoding prov ideado por Guava.

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

Por ejemplo:

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

Y no se olvide de añadir la siguiente línea a su módulo de GWT XML:

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

La clase BaseEncoding se puede utilizar tanto en el lado del cliente GWT y el lado del servidor.

Cuestiones relacionadas