not multiple length java8 getbytes error encoded array java gwt base64

java - multiple - ¿Cómo codifico/decodifico cadenas cortas como Base64 usando GWT?



java return base64 (4)

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

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?


Puede usar JavaScript nativo para esto en el cliente en todos los navegadores excepto en IE ≤ 9. En el servidor, puede usar una de las clases oficiales .

Java / GWT:

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

Encode es btoa .


Puede usar la clase BaseEncoding proporcionada 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 olvide agregar la siguiente línea a su XML del módulo GWT:

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

La clase BaseEncoding se puede usar tanto en el lado del cliente GWT como en el lado del servidor.


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

Proporciona codificación base64 a GWT.

Base64.encode(string.getBytes());

Agregue la importación a continuación:

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

No olvide agregar la siguiente línea a su XML del módulo GWT:

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

Dependencia Maven

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