解析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 "" } |