Как кодировать/декодировать короткие строки как Base64 с помощью GWT?

Мне нужно закодировать короткую строку как base 64 в GWT и декодировать строку base 64 на сервере. У кого-нибудь есть служебный класс или библиотека для этого?


person David Tinker    schedule 12.02.2010    source источник
comment
возможный дубликат декодировать данные Base64 в java   -  person Johan    schedule 09.09.2011
comment
Люди должны начать замечать, что вопрос GWT, вероятно, имеет другой контекст, чем Java SE, и не является дубликатом вопроса Java SE. То, что работает на Java SE, требует дополнительной обработки для размещения на GWT.   -  person Blessed Geek    schedule 21.10.2011


Ответы (4)


Для этого вы можете использовать собственный JavaScript для клиента во всех браузерах, кроме IE ≤ 9. На сервере вы можете использовать один официальных классов.

Java/GWT:

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

Код btoa.

person Janus Troelsen    schedule 30.03.2012

Вы можете использовать класс 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, так и на стороне сервера.

person Jake W    schedule 11.12.2014

Вы можете посмотреть на 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>
person Ronan Quillevere    schedule 05.02.2014

Класс Base64 нельзя использовать на стороне клиента. Пришлось бы подражать.

person Brandon    schedule 27.03.2011