Android 解析jwt遇到java.lang.IllegalArgumentException: bad base-64

解析jwt的时候遇到了java.lang.IllegalArgumentException: bad base-64
百思不得其解
按照网上说的:Android&ios java
这俩咋就不好使呢?
后来我看了篇帖子说

1
2
3
4
5
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之后就正常了

1
2
3
4
5
6
7
8
9
10
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 ""
   }