如何在GWT中将短字符串编码/解码为Base64?

15

我需要在GWT中将短字符串编码为Base64,然后在服务器上解码Base64字符串。有没有实用类或库可以做到这一点?


18
人们应该开始注意到,GWT问题可能与Java SE有不同的上下文,并且不是Java SE问题的重复。在Java SE上运行的内容需要额外的处理才能放置在GWT上。 - Blessed Geek
4个回答

15

除了IE ≤ 9之外,您可以在客户端上使用本机JavaScript实现此操作。在服务器上,您可以使用官方类之一

Java/GWT:

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

编码是btoa


7
你可以使用Guava提供的BaseEncoding类。

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客户端和服务器端使用。

3
您可以查看https://github.com/mooreds/gwt-crypto,它为GWT提供了base64编码。
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>

0

Base64类不能在客户端使用,必须模拟它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接