前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android OkHttp3处理重定向

Android OkHttp3处理重定向

作者头像
饮水思源为名
发布2019-05-09 15:33:01
2.6K0
发布2019-05-09 15:33:01
举报
文章被收录于专栏:Android小菜鸡Android小菜鸡

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

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

代码语言:javascript
复制
 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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.04.24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档