【发布时间】:2019-11-23 12:50:27
【问题描述】:
所以当我使用来自 import org.apache.commons.codec.binary.Base64 的方法 Base64.decodeBase64() 时,我试图在我的 android 应用程序中解码 JWT 令牌;
当我打印从解码令牌获得的字符串时,我在字符串“������”的末尾得到这些字符,而实际上应该是“}}”
代码如下:
String token = loadFromCache("token");
String[] split_String = token.split("\\.");
String base64EncodedBody = split_String[1];
System.out.println("BASE64 Body: " + base64EncodedBody);
String body = new String(Base64.decodeBase64(base64EncodedBody.getBytes()));
System.out.println("BODY: " + body);
try {
JSONObject jsonObject = new JSONObject(body).getJSONObject("employee");
} catch (JSONException e) {
e.printStackTrace();
}
令牌是有效的,而且我确实得到了几乎所有正确的值。只是它以字符 ������ 而不是 }} 结尾。任何帮助表示赞赏
【问题讨论】:
-
你为什么要坚持使用apache
Base64? -
我并不坚持使用它,但它是我用得最远的一个。尝试使用 androids 的 Base64,但没有让我走那么远,所以我只使用了 apache,但我确实找到了替代解决方案。
-
您是否尝试过
String body = new String(Base64.decode(base64EncodedBody.getBytes(Charset.forName("UTF-8")), Base64.NO_WRAP), Charset.forName("UTF-8"));使用您自己想要的标志和编码? -
成功了(竖起大拇指)
-
很好,很高兴为您提供帮助。
标签: java android json base64 decode