dylan泉 2017-05-10 12:18 采纳率: 0%
浏览 1204

华为平板获取不了服务器返回的401状态码

服务器返回http状态码401,华为平板不能解析

使用token的机制,后台使用的是ssm框架,使用springmvc拦截器校验app用户是否已经登录。由于没有找到方法直接在拦截器中返回json数据,只能通过response.setStatus(401)来通知app端需要登录,使用华为手机和别的测试机都没问题,但今天使用华为的平板,则发现获取不了401状态码,报了一个空指针异常,部分错误:
05-10 16:24:04.900: W/x_log:HttpRetryHandler.canRetry(L:64)(30512): The Request Method can not be retried.

由于安卓的人走了,明天再补齐所有错误!
我服务器的代码是这样的:

 public class WalletInterceptor extends HandlerInterceptorAdapter {
    // 不拦截的url
    private List<String> uncheckUrls;

    public void setUncheckUrls(List<String> uncheckUrls) {
        this.uncheckUrls = uncheckUrls;
    }

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
            throws Exception {
        System.out.println("进入拦截器");
        // 如果为登录,注册,获取验证码的接口,则不拦截
        String requestUrl = request.getRequestURI();
        if (uncheckUrls.contains(requestUrl)) {
            System.out.println("跳过拦截器");
            return super.preHandle(request, response, handler);
        }
        // 获取token和ID
        String token = request.getParameter("token");
        String ID = request.getParameter("ID");
        System.out.println("token:" + token + "===" + "ID" + ID);
        if (token == null || "".equals(token)) {
            // 不存在则抛出一个401异常给移动端
            response.setStatus(401);
            return false;
        }
        // 判断是否存在连接,不存在则要通知前端登录
        Jedis jedis = RedisUtils.getJedis();
        byte[] by = jedis.get(token.getBytes());
        if ((by == null) || (!(new String(by)).equals(walletID))) {
            // 不存在连接,则抛一个401给移动端
            response.setStatus(401);
            return false;
        }
        System.out.println("校验成功");
        return super.preHandle(request, response, handler);
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
            ModelAndView modelAndView) throws Exception {
        super.postHandle(request, response, handler, modelAndView);
    }
}

第一次发帖,有什么写的不好的地方请指出来,下次发帖再改善一下

  • 写回答

1条回答

  • dylan泉 2017-05-10 12:15
    关注

    如果有能在springmvc拦截器返回json数据的方法也可以,网上找了很多资料也没有看到能返回json数据的方法。

    评论

报告相同问题?

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘