2010-02-12 3 views
14

Мне нужно закодировать короткую строку в качестве базы 64 в GWT и декодировать базовую 64 строку на сервере. Для кого-нибудь есть класс утилит или библиотека?Как кодировать/декодировать короткие строки как Base64 с использованием GWT?

+1

Возможный дубликат [Декодировать Base64 данные в java] (http://stackoverflow.com/questions/469695/decode-base64-data-in-java) – Johan

+17

Люди должны начать замечать, что вопрос GWT, вероятно, имеет другой контекст от Java SE и не является дубликатом вопроса Java SE. Что работает на Java SE, требуется дополнительное лечение для GWT. –

ответ

12

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

Java/GWT:

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

Encode является btoa.

0

Класс Base64 не может использоваться на стороне клиента. Его нужно было бы эмулировать.

+0

который нельзя использовать? –

3

Вы можете посмотреть на https://github.com/mooreds/gwt-crypto

Он обеспечивает кодирование base64 для GWT.

Base64.encode(string.getBytes()); 

Добавьте ниже импорта:

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

Не забудьте добавить следующую строку в модуль GWT XML:

<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> 
5

Вы можете использовать класс BaseEncoding prov с помощью Гуавы.

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()); 
} 

И не забудьте добавить следующую строку в модуль GWT XML:

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

Класс BaseEncoding может использоваться на обоих стороне клиента GWT и стороне сервера.

Смежные вопросы