检测Web应用程序中的设备types
我们有一个基于Java的应用程序,我们希望检测发送请求的设备的设备types(移动设备或桌面设备)。
这怎么可能?
你必须从请求中读取User-Agent
标题并决定。
在香草servlet应用程序中,一个简单的方法是:
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { if(request.getHeader("User-Agent").indexOf("Mobile") != -1) { //you're in mobile land } else { //nope, this is probably a desktop } }
您可以通过parsinghttp头来获取设备信息
String browserType = request.getHeader("User-Agent");
你应该parsingbrowserType来获取设备types
这可能有帮助
public String getBrowserInfo( String Information ) { String browsername = ""; String browserversion = ""; String browser = Information; if (browser.contains("MSIE")) { String subsString = browser.substring(browser.indexOf("MSIE")); String info[] = (subsString.split(";")[0]).split(" "); browsername = info[0]; browserversion = info[1]; } else if (browser.contains("Firefox")) { String subsString = browser.substring(browser.indexOf("Firefox")); String info[] = (subsString.split(" ")[0]).split("/"); browsername = info[0]; browserversion = info[1]; } else if (browser.contains("Chrome")) { String subsString = browser.substring(browser.indexOf("Chrome")); String info[] = (subsString.split(" ")[0]).split("/"); browsername = info[0]; browserversion = info[1]; } else if (browser.contains("Opera")) { String subsString = browser.substring(browser.indexOf("Opera")); String info[] = (subsString.split(" ")[0]).split("/"); browsername = info[0]; browserversion = info[1]; } else if (browser.contains("Safari")) { String subsString = browser.substring(browser.indexOf("Safari")); String info[] = (subsString.split(" ")[0]).split("/"); browsername = info[0]; browserversion = info[1]; } return browsername + "-" + browserversion; }
您可以获得第三方软件解决scheme。 有很多开源的。 在此之前,我已经使用了51Degrees.mobi的Java解决scheme (并且也开发了他们的开源C解决scheme)。 按照该链接并点击下载button。 起床和跑步相对容易。
您可以检查HttpServletRequest
对象上的User-Agent
HTTP标头 。
参考: http : //www.w3.org/Protocols/HTTP/HTRQ_Headers.html#user-agent
你可以试试这个lib我想,yauaa可以检测到用户代理string是哪个设备/软件
对于Java 51Degrees在GitHub上有一个免费的API https://github.com/51Degrees/Java-Device-Detection ,它是定期的不定期的,应该能够涵盖所有你需要的基本的拘留。
有一个教程如何使用API的设备types检测在这里https://51degrees.com/Developers/Documentation/APIs/Java-V32/Tutorials/Web-App
还有一个提供DeviceType属性的免费云版本(如果您不仅仅需要IsMobile),您可以在51Degrees网站上find关于此的详细信息。 你需要通过网站“购买”免费的云,但它不要求银行的细节,是完全免费的。 您还可以根据您的要求使用JavaScript和其他集成。
披露:我在51Degrees工作。