欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

OkHttp3 添加Authorization 异常 Unexpected char 0x0a at 42 in Authorization value 解决

程序员文章站 2022-10-18 19:31:18
异常记录导致错误:2020-09-27 11:00:55.027 29224-29224/cn.sh.changxing.smec.dt E/AndroidRuntime: FATAL EXCEPTION: main Process: cn.sh.changxing.smec.dt, PID: 29224 java.lang.IllegalArgumentException: Unexpected char 0x0a at 42 in Authorization value: Ba...

异常记录

导致错误:

2020-09-27 11:00:55.027 29224-29224/cn.sh.changxing.smec.dt E/AndroidRuntime: FATAL EXCEPTION: main
    Process: cn.sh.changxing.smec.dt, PID: 29224
    java.lang.IllegalArgumentException: Unexpected char 0x0a at 42 in Authorization value: Basic SjhERSFtRzNBRlVhS1FKNToyMDIwMDkyNw==
    
        at okhttp3.Headers$Builder.checkNameAndValue(Headers.java:352)
        at okhttp3.Headers$Builder.set(Headers.java:332)
        at okhttp3.Request$Builder.header(Request.java:184)

错误分析:第42处 出现 0x0a 字符!  0x0a:表示换行符。 好吧,在结尾处有换行符导致的异常(但打印的字符串并看不出来.....)

异常写法:

    private String getToken() {
        try {
            String salt = SPUtils.getInstance(MyApplication.getInstance()).getString(SPUtils.SP_IOT_BASIC_SALT);
            if (!TextUtils.isEmpty(salt)) {
                String str = salt + ":" + getSystemDate();
                String token = "Basic " + Base64.encodeToString(str.getBytes(), Base64.DEFAULT);
                Log.d(TAG, "getToken: str = " + str + "  token = " + token);
                return token;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

修改处:

String token = "Basic " + Base64.encodeToString(str.getBytes(), Base64.DEFAULT).replaceAll("\r|\n", "");

转码后,去除字符串中所有的换行符!

 

本文地址:https://blog.csdn.net/Android_man_me/article/details/108823837