Android 解析jwt遇到java.lang.IllegalArgumentException: bad base-64
16lz
2021-01-23
解析jwt的时候遇到了java.lang.IllegalArgumentException: bad base-64
百思不得其解
按照网上说的:Android&ios java
这俩咋就不好使呢?
后来我看了篇帖子说
android开发中的bad base-64错误在涉及到服务器的软件中,由于使用android的Base64解码功能,而服务器端加密为了防止URL格式问题,会采用Apache的URLSafeEncode等方式进行数据安全加密,android端使用Base64.decode(src,Base64.URL_SAFE)不会出现问题但是如果android自己加密,使用的时Base64.encodeToString(bstr,Base64.DEFAULT)就会有可能出现
对就是这个可能性,让我用Base64.DEFAULT解析的时候出bug了,关键这bug还挺奇怪,跟字符串长度没关系,跟解析内容没关系,但解析的东西组合到一起就报错,使用了Base64.URL_SAFE之后就正常了
private fun base64Decode(content: String ): String? { //注意此处不能使用Base64.DEFAULT,否则再特定情况下会报错 val contentByte = Base64.decode(content,Base64.URL_SAFE) try { return String(contentByte, java.nio.charset.StandardCharsets.UTF_8) } catch (e: Exception) { e.printStackTrace() } return "" }
更多相关文章
- Android资源文件 - 使用资源存储字符串 颜色 尺寸 整型 布尔值
- 处理固定宽度下的长字符串绘制(Android)
- android图片压缩并转为base64字符串
- Android项目中如果json字符串中key-value顺序很重要,不要使用Andr
- listview为空时,显示字符串
- android 字符串、颜色和尺寸
- Android DataBinding 字符串拼接
- Android xliff和字符串资源
- android xliff字符串操作