Retrofit学习时遇到的错误

解析时报错com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 3 path $.

思路:1,分析是否json格式有错误(通过gsonformat验证)。
2,后台返回数据是否有多余空格(拦截器打印返回数据)。
3,retrofit.addConverterFactory(GsonConverterFactory.create(gson))检查解析器是否正确)(配置gson解析并creat )final static Gson gson = new GsonBuilder()
.setLenient()
.create();

这是要传入构造器的gson。

retrofit添加Cookie
public class AddCookiesInterceptor implements Interceptor {

    @Override
    public Response intercept(Chain chain) throws IOException {

        final Request.Builder builder = chain.request().newBuilder();
        String cookie = SPUtil.getInstance().getString("cookie", "");
        if(!StringUtil.isEmpty(cookie)){
            builder.addHeader("Cookie", cookie);
       }
        return chain.proceed(builder.build());
    }
}
public class ReceivedCookiesInterceptor implements Interceptor {

    @Override
    public Response intercept(Chain chain) throws IOException {

        Response originalResponse = chain.proceed(chain.request());
        //这里获取请求返回的cookie
        if (!originalResponse.headers("Set-Cookie").isEmpty()) {
            final StringBuffer cookieBuffer = new StringBuffer();
            String[] split = originalResponse.headers("Set-Cookie").get(0).split(";");
            cookieBuffer.append(split[0]).append(";");
            SPUtil.getInstance().put("cookie",cookieBuffer.toString());
            LogUtil.d(cookieBuffer.toString());
        }

        return originalResponse;
    }
}

然后在构建OkHttpClient的时候将上面两个拦截器添加进去就行了

OkHttpClient.Builder mBuilder = new OkHttpClient().newBuilder();
//根据需求判断是否需要添加或存储Cookie
if(needCookie){
            mBuilder.addInterceptor(new ReceivedCookiesInterceptor());
            mBuilder.addInterceptor(new AddCookiesInterceptor());
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值