Мне нужно закодировать короткую строку как base 64 в GWT и декодировать строку base 64 на сервере. У кого-нибудь есть служебный класс или библиотека для этого?
Как кодировать/декодировать короткие строки как Base64 с помощью GWT?
Ответы (4)
Для этого вы можете использовать собственный JavaScript для клиента во всех браузерах, кроме IE ≤ 9. На сервере вы можете использовать один официальных классов.
Java/GWT:
private static native String b64decode(String a) /*-{
return window.atob(a);
}-*/;
Код btoa
.
Вы можете использовать класс BaseEncoding, предоставляемый Guava.
http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/io/BaseEncoding.html
Например:
try {
String encoded = BaseEncoding.base64().encode("foo".getBytes("UTF-8"))
} catch (UnsupportedEncodingException e) {
GWT.log(e.getMessage());
}
И не забудьте добавить следующую строку в XML модуля GWT:
<inherits name="com.google.common.io.Io"/>
Класс BaseEncoding можно использовать как на стороне клиента GWT, так и на стороне сервера.
Вы можете посмотреть на https://github.com/mooreds/gwt-crypto.
Он обеспечивает кодировку base64 для GWT.
Base64.encode(string.getBytes());
Добавьте импорт ниже:
import com.googlecode.gwt.crypto.bouncycastle.util.encoders.Base64;
Не забудьте добавить следующую строку в XML модуля GWT:
<inherits name="com.googlecode.gwt.crypto.Crypto"/>
Зависимость от Maven
<dependency>
<groupId>com.googlecode.gwt-crypto</groupId>
<artifactId>gwt-crypto</artifactId>
<version>2.3.0</version>
</dependency>
Класс Base64 нельзя использовать на стороне клиента. Пришлось бы подражать.