Java获取设备信息

  1. 因为要做登入日志的记录,需要记录用户的设备信息、比如ip、操作系统

           需要使用工具使用jar包 



   eu.bitwalker
   UserAgentUtils
   1.21

 通过浏览器带的hand来获取(User-Agent)获取操作系统

/**
     * 获取操作系统名称
     *
     * @return
     */
    public String getOpenSystem(HttpServletRequest request) {
        String userAgent = request.getHeader("User-Agent");
        String openSystem=getDevice(userAgent);
        return openSystem;
    }


/**
     * 解析 用户代理(User-Agent)
     * @param userAgent 用户代理User-Agent ,UA
     * @return "操作系统:%s
     * @author ghl
     */
    private static String getDevice(String userAgent) {
        //解析agent字符串
        UserAgent ua = UserAgent.parseUserAgentString(userAgent);
        //获取操作系统对象
        OperatingSystem os = ua.getOperatingSystem();
        return String.format("%s",os.getName());
    }

获取ip地址

/**
     * 获取ip地址
     *
     * @param request
     * @return
     */
    private String getIpAddr(HttpServletRequest request) {
        String ip = request.getHeader("x-forwarded-for");
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("Proxy-Client-IP");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("WL-Proxy-Client-IP");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getRemoteAddr();
        }
        return ip;
    }

通过ip地址获取登入的地址

  private String getAddress(String jsonAddr) {
        JSONObject jsonObject = JSON.parseObject(jsonAddr);
        JSONObject date = jsonObject.getJSONObject("data");
        String region = date.getString("region");
        if ("XX".equals(region)) {
            return date.getString("city");
        }
        return region;
    }

/**
     * 获取到json得地址数据
     *
     * @param ip
     * @return
     */
    private String getJsonAddress(String ip) {
        StringBuffer result = null;
        try {
            // String strIP = "36.27.47.234";
            URL url = new URL("http://ip.taobao.com/outGetIpInfo?ip=" + ip + "&accessKey=alibaba-inc");
            URLConnection conn = url.openConnection();
            BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8"));
            String line = null;
            result = new StringBuffer();
            while ((line = reader.readLine()) != null) {
                result.append(line);
            }
            reader.close();
        } catch (IOException e) {
            System.out.println(e.getMessage());
            return "读取失败";
        }
        return result.toString();
    }

 

你可能感兴趣的:(java,java)