当前位置: 首页 > news >正文

Java 识别请求来自移动端还是电脑端

代码:

/**
 * @Author : JCccc
 * @CreateTime : 2020/7/1
 * @Description :
 **/
public class DiscernRequestUtil {
    /**
     * 识别请求是 手机端(分系统) 还是电脑端
     * @param userAgent
     * @return
     */
    public static String getRequestDevice(String userAgent) {
        userAgent=userAgent.toLowerCase();
        if (userAgent.contains("windows phone")){
            return  "Windows手机端";
        }else if (userAgent.contains("android")) {
            return  "安卓手机端";
        }else if(userAgent.contains("iphone") || userAgent.contains("ipad")){
            return  "ios手机端";
        }else {
            return  "电脑端";

        }
    }

    /**
     * 识别请求是手机端还是电脑端
     * @param userAgent
     * @return
     */
    public static String getAskType(String userAgent) {
        userAgent=userAgent.toLowerCase();
        if (userAgent.contains("windows phone")
                ||
                userAgent.contains("android")
                ||
                userAgent.contains("iphone")
                ||
                userAgent.contains("ipad") //暂且把ipad也归为苹果设备
        ){
            return  "mobile";
        }else {
            return  "pc";

        }
    }

}

 

接口测试&使用方式:

就是从HttpServletRequest request 的头里拿出 user-agent 这个key的值做识别处理。

    @GetMapping("doSomeTest")
    public void doSomeTest(HttpServletRequest request){
        
        
        String userAgent  = request.getHeader("user-agent");
        
        
        String requestDevice = getRequestDevice(userAgent);
        System.out.println(requestDevice);

        
        String askType = getAskType(userAgent);
        System.out.println(askType);

    }

 

 

相关文章:

  • MySql 别犯糊涂了! LEFT JOIN 的 ON 后接上筛选条件,多个条件会出事!
  • 微服务 分布式事务解决方案
  • MySql 索引失效、回表解析
  • Springboot 超简单实现在线预览,Word文档 doc、xlsx、pdf、txt等
  • Java 结合实例学会使用 静态代理、JDK动态代理、CGLIB动态代理
  • Springboot 实现 上传、下载 以及解决必须项目重启才能访问资源的问题
  • JAVA 获取微信用户信息,看完这篇你必须得学会
  • Java 求助! 为什么我拿不到错误信息,e.getMessage()
  • Java 获取范围内的随机整数
  • Xshell6 提示更新,使用不了! 解决方案
  • Springboot 前端请求的每次sessionid 都不同
  • Springboot mavne项目多模块打包,报错 找不到 base包,找不到common类等等
  • 浅谈乐观锁的设计
  • Mysql 唯一索引的字段值 允许多个NULL值存在吗
  • Springboot @Autowired 和 @Resource 我的剖析,你看完就不会忘
  • [译] 怎样写一个基础的编译器
  • 《微软的软件测试之道》成书始末、出版宣告、补充致谢名单及相关信息
  • JavaWeb(学习笔记二)
  • JAVA之继承和多态
  • LintCode 31. partitionArray 数组划分
  • Next.js之基础概念(二)
  • Python进阶细节
  • Service Worker
  • Transformer-XL: Unleashing the Potential of Attention Models
  • vue-cli在webpack的配置文件探究
  • vue--为什么data属性必须是一个函数
  • zookeeper系列(七)实战分布式命名服务
  • 从零开始的无人驾驶 1
  • 使用parted解决大于2T的磁盘分区
  • 小程序 setData 学问多
  • 优化 Vue 项目编译文件大小
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • 东超科技获得千万级Pre-A轮融资,投资方为中科创星 ...
  • ​软考-高级-系统架构设计师教程(清华第2版)【第9章 软件可靠性基础知识(P320~344)-思维导图】​
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • $Django python中使用redis, django中使用(封装了),redis开启事务(管道)
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (30)数组元素和与数字和的绝对差
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (9)STL算法之逆转旋转
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (七)Java对象在Hibernate持久化层的状态
  • (三)Honghu Cloud云架构一定时调度平台
  • (转)scrum常见工具列表
  • .a文件和.so文件
  • .bat批处理(七):PC端从手机内复制文件到本地
  • .net 7 上传文件踩坑
  • .Net Attribute详解(上)-Attribute本质以及一个简单示例
  • .NET CF命令行调试器MDbg入门(一)
  • .NET MAUI学习笔记——2.构建第一个程序_初级篇
  • .NET基础篇——反射的奥妙
  • .Net组件程序设计之线程、并发管理(一)
  • @data注解_一枚 架构师 也不会用的Lombok注解,相见恨晚
  • @EnableConfigurationProperties注解使用
  • @ModelAttribute 注解