知识点
相关文章
更多最近更新
更多服务器端通过http请求区分是mobile还是pc
2019-03-25 23:14|来源: 网络
近来在开发一个基于手机上网的项目。遇到的第一件事情就是,该项目需要同时支持手机和PC。详细的说:当pc登陆上来,访问的是html;当手机登陆上来就是wml。
那我们怎么来判断呢?
入正题,下面说说我的解决办法。
/**
* 传入http请求的UserAgent
* 根据它判断是手机还是电脑发送过来的请求
* @param userAgent
* @return
*/
public static boolean choose(String userAgent) {
if (userAgent.indexOf("Noki") > -1 || // Nokia phones and emulators
userAgent.indexOf("Eric") > -1 || // Ericsson WAP phones and emulators
userAgent.indexOf("WapI") > -1 || // Ericsson WapIDE 2.0
userAgent.indexOf("MC21") > -1 || // Ericsson MC218
userAgent.indexOf("AUR") > -1 || // Ericsson R320
userAgent.indexOf("R380") > -1 || // Ericsson R380
userAgent.indexOf("UP.B") > -1 || // UP.Browser
userAgent.indexOf("WinW") > -1 || // WinWAP browser
userAgent.indexOf("UPG1") > -1 || // UP.SDK 4.0
userAgent.indexOf("upsi") > -1 || //another kind of UP.Browser
userAgent.indexOf("QWAP") > -1 || // unknown QWAPPER browser
userAgent.indexOf("Jigs") > -1 || // unknown JigSaw browser
userAgent.indexOf("Java") > -1 || // unknown Java based browser
userAgent.indexOf("Alca") > -1 || // unknown Alcatel-BE3 browser (UP based)
userAgent.indexOf("MITS") > -1 || // unknown Mitsubishi browser
userAgent.indexOf("MOT-") > -1 || // unknown browser (UP based)
userAgent.indexOf("My S") > -1 ||// unknown Ericsson devkit browser
userAgent.indexOf("WAPJ") > -1 ||//Virtual WAPJAG www.wapjag.de
userAgent.indexOf("fetc") > -1 ||//fetchpage.cgi Perl script from www.wapcab.de
userAgent.indexOf("ALAV") > -1 || //yet another unknown UP based browser
userAgent.indexOf("Wapa") > -1 || //another unknown browser (Web based "Wapalyzer")
userAgent.indexOf("Oper") > -1) {
return true;
} else {
return false;
}
}
参数userAgent:
String userAgent = request.getHeader("User-Agent");
有人说可以根据来访的IP来判断,好像是行不通的。当采用wap上网方式还好判断;一旦采用net来访问,往往也是可以获取独立的IP的。
还有人说可以用HTTP_ACCEPT来判断,判断访问过来的终端是否支持wml,这样问题又会出现,如果某个浏览器既能支持wml和html,或者现在很多智能手机既能支持wml和html,你还是没招了!
本文链接:服务器端通过http请求区分是mobile还是pc,转自:http://lianj-lee.iteye.com/blog/460226
相关问答
更多-
java里面什么是服务器端编程?[2023-05-08]
你写的程序放在服务器电脑上运行,叫做服务器端编程。 既然是叫做服务器,也说明你写的程序要可以接受客户端的互动。 你写的程序放在客户端上运行,叫做客户端编程。 -
怎么配置Nginx的服务器端包含SSI?[2023-06-04]
回复 1# 的帖子 nginx默认就是支持ssi的,在配置文件中开启即可。在虚拟主机location 段里加上(加在http,server段里也可以)ssi on;ssi_silent_errors on;ssi_types text/shtml;这3行,再/usr/local/nginx/sbin/nginx -s reload 重启nginx -
HttpClient 的Post 请求,服务器端的doPost方法怎么获取数据?[2022-10-23]
服务端和普通的servlet获得数据没有区别,就是通过request.getParameter()等API获得数据. 要知道: 服务端的代码与你是通过HttpClient请求还是浏览器请求都没有联系! -
什么是服务器端[2022-05-02]
简单的说,服务器端是为客户端服务的,服务的内容诸如向客户端提供资源,保存客户端数据等等.客户端可以是任意的一台电脑,只要它和服务器端存在连接,并且得到了服务器端的授权,就可以使用服务器端的服务.象现在就可以理解为百度的网站是服务器端,我们现在使用的电脑就是客户端.我们可以使用它的服务. 通常的服务器端都是服务器级的高级PC,以便多客户访问时不会造成延时甚至数据溢出. -
PC服务器端和android手机客户端socket通信问题[2022-05-03]
1. PC服务器启用ServerSocket 两个通信实体在建立虚拟链路之前,需要有一方先准备好,主动接受来自其他通信实体的连接请求。 使用ServerSocket对象监听来自客户端的Socket连接。 //创建ServerSocket对象 ServerSocket ss = new ServerSocket(30000); //监听来自客户端的请求 while(true){ Socket s = ss.accept(); … } 如果没有连接,则将一直处于等待状态。当接收到连接请求后,获取 ... -
某个servlet的所有doGet方法都将在不同的线程中自动运行。 这就是Java Servlet Specification 3.0关于处理请求的内容 基本的Servlet接口定义了一个用于处理客户端请求的服务方法。 为servlet容器路由到servlet实例的每个请求调用此方法。 处理对Web应用程序的并发请求通常要求Web Developer设计servlet,该servlet可以处理在特定时间在服务方法内执行的多个线程。 通常,Web容器通过在不同线程上并发执行服务方法来处理对同一servlet的 ...
-
请参阅http://www.php.net/manual/en/function.microtime.php 在请求制作和请求处理部分相应地使用代码。 Please refer http://www.php.net/manual/en/function.microtime.php Use the code accordingly on request making and request processing sections.
-
就个人而言,对于服务器端检测,我喜欢WURFL。 它有一个.NET API可用。 Personally, for server side detection I like WURFL. It has a .NET API available.
-
你看过WURFL了吗? 它是一个服务器端描述符文件,可以帮助检测各种移动用户代理,功能,屏幕大小,颜色深度等。 我不确定是否有任何东西可以告诉你具体的型号名称/制造商ATM,但像上面这样的东西至少可以给你一个线索。 编辑:进一步阅读...看起来它可能能够在许多情况下提供特定于设备的信息。 Have you looked into WURFL? It's a server-side descriptor file that can help detect various mobile user-agents, ...
-
当sling实现脚本语言时,它提供了一组有限的常用对象绑定。 这些定义如下: http://sling.apache.org/apidocs/sling5/org/apache/sling/api/scripting/SlingBindings.html 此外,Rhino还实现了几个与java集成的功能。 比如包含所有顶级java包的Packages变量,例如java和com。这提供了一种直接从esp与java交互的方法,例如。 Packages.java.util.Calendar.getInstance ...