如何在java中单独从客户端获取浏览器名称?

时间:2016-02-02 04:49:38

标签: java

我尝试使用

 String userAgent=req.getHeader("user-agent");

以及以下

@GET
    @Path("/get")
    public Response addUser(@HeaderParam("user-agent") String userAgent) {

        return Response.status(200)
            .entity("addUser is called, userAgent : " + userAgent)
            .build();

    }

但我只需要,浏览器名称为chrome,firefox,IE.Please帮助,如果有人知道的话。

更新:得到答案

 public String browser(@HeaderParam("user-agent") String userAgent){

        UserAgent browserName = UserAgent.parseUserAgentString(userAgent);
        String browser=browserName.toString();
        System.out.println(browser)
    }

1 个答案:

答案 0 :(得分:2)

从用户代理字符串中获取信息有点像黑色艺术。最简单的可能是使用库来解析用户代理字符串并提取所需的信息。

我过去曾使用UADetector取得了不错的成绩,但毫无疑问其他图书馆也在那里。

以下示例来自UADetector documentation

UserAgentStringParser parser = UADetectorServiceFactory.getResourceModuleParser();
ReadableUserAgent agent = parser.parse(request.getHeader("User-Agent"));

out.append("You're a <em>");
out.append(agent.getName());
out.append("</em> on <em>");
out.append(agent.getOperatingSystem().getName());
out.append("</em>!");