Android OkHttp3处理重定向

今天接一个设备对外接口时,遇到了重定向问题。起因是在PostMan上跑接口一点问题都没有,但是在程序中就是死活不行。错误提示401未授权unauthorized。拦截OkHttp的请求日志发下日志打印了一个新的地址,发现是重定向的问题。

重定向:发起请求时,被请求的接口重新指向另外一个路径,导致401无法访问。我们用同样的参数去请求新指向的接口能够暂时的成功访问,但是不排除原接口重新定位其他接口的可能。

 final HashMap<String,String> headers=new HashMap<>();
        headers.put("Authorization","Bearer c.eQBOOWuOAbqoTA713DDxOfoxahXB6DqmY8iQmFT0tSWcLlnZEBlkbv3KQRgLRr6slD9R4UoSCsScuAVrCfarBlVyRSZKSZp1MbWvhVsrwLtLoo9SU9JoeJ56Hf3GCBG1iIbJExVQduDtaKOX");
        OkHttpUtil.getInstance().asynGet("https://developer-api.nest.com",headers, new OkHttpUtil.ResultCallBack() {
            @Override
            public void successListener(okhttp3.Call call, Response response) {
                switch (response.code()){
                    case 200:
                        break;
                    case 401:
                        OkHttpUtil.getInstance().asynGet(String.valueOf(response.request().url()),headers, new OkHttpUtil.ResultCallBack() {
                            @Override
                            public void successListener(Call call, Response response) {
                                try {
                                    Log.i("wsy","code="+response.code()+
                                            "\nbody="+response.body().string());
                                } catch (IOException e) {
                                    e.printStackTrace();
                                }
                            }

                            @Override
                            public void failListener(Call call, IOException e) {

                            }
                        });
                        break;
                }
            }

            @Override
            public void failListener(okhttp3.Call call, IOException e) {
                Log.i(TAG,"error--"+e.getLocalizedMessage());
            }
        });
    }

处理方法其实很简单,判断401Code,通过response.request().url()拿到重定向后的地址再次访问就可以了。OkHttpUtil是笔者自己封装的简单工具类,需要的朋友可以去笔者的Github上获取,顺便打个star谢谢。 wusyLibrary——OkHttpUtil

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券