我们经常需要知道访问网站的设备是移动终端还是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是否为空的判断。

最新文章

  1. react-native Simulator com+r不能刷新模拟器
  2. ie浏览器下,get请求缓存问题
  3. freemarker 数据做加减计算
  4. 采用TCP协议的PIC32MZ ethernet bootloader
  5. C# WebClient 使用http免费代理。
  6. MySQL表中数据的迁移
  7. HBase 安装过程记录
  8. C# Winform 获取天气情况
  9. iOS学习笔记之ARC内存管理
  10. Spring Security4源码解读探寻权限机制
  11. UVALive 7148 LRIP 14年上海区域赛K题 树分治
  12. mongoDB windows reinstall add auth
  13. 基于飞思卡尔i.MX 6Quad Sabrelite开发板的触摸屏调试
  14. 【iOS开发-48】九宫格布局案例:自己主动布局、字典转模型运用、id和instancetype差别、xib反复视图运用及与nib关系
  15. 两个同级div重叠的情况
  16. vue报错:/node_modules/babel-loader/lib!./node_modules/vue-loader/lib/selector.js?
  17. Netty实现简易http_server
  18. JAVA设计模式(二)工厂模式
  19. UNITY3d在移动设备上的一些优化实战
  20. awesome-workflow-engines

热门文章

  1. 【转载】WEB系统性能问题的分析定位方法
  2. Android中Activity的生命周期图
  3. Linux——Django 开发环境部署(一)
  4. chown将指定文件的拥有者改为指定的用户或组(转)
  5. c语言字符串赋值
  6. iOS 11之Vision人脸检测
  7. linux下 apache启动、停止、重启命令
  8. angularjs2中的非父子组件的通信
  9. Atitit.面向接口的web 原理与设计重写 路由启动绑定配置url router rewriting urlpage  mvc mvp的 java c#.net php js
  10. Python内置函数之range()