如何判断移动终端访问还是PC访问?

我们经常需要知道访问网站的设备是移动终端还是PAD还是PC,下面给出判断的java代码供参考。实现的原理就是获取HTTP消息头里User-Agent和x-wap-profile,User-下面是User-Agent实际抓包的例子。

User-Agent: Mozilla/5.0 (Linux; Android 4.3; Coolpad 8705 Build/JSS15Q) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.135 Mobile Safari/537.36

/**
     * 判断是否是从手机或者PAD访问的
     * 
     * @param request
     * @return
     * true:为移动终端
     * false:为PC用户
     */
    public static boolean IsMobile(HttpServletRequest request) {
        String user_agent = request.getHeader("User-Agent");
        String wap_profile = request.getHeader("x-wap-profile");
        if(user_agent ==null)
            return true;
        if (user_agent.contains("Android") || user_agent.contains("iPhone")
                || (wap_profile != null && wap_profile.length() > 0)) {
            return true;
        } else {
            return false;
        }

    }

另外需要注意的是同样是移动终端,在TD-LTE环境下发现请求包里会不携带User-Agent头,移动终端在WIFI和WCDMA环境下访问就会携带。这个问题让我花了一些时间(系统会报500错,后来增加了user_agent是否为空的判断。

posted @ 2014-09-04 11:02  程序员老刘  阅读(761)  评论(0编辑  收藏  举报