Android - 获取公网ip (安全检测)

需求:

银联安全检测,在支付的时候,必须传入公网ip的,作为风控的必传字段,但是公网ip不能直接获取,所以就使用第三方阿里的接口来获取公网ip。

代码:

为防止和项目中已经封装好的Retrofit框架冲突,这里通过HttpURLConnection的get请求直接封装一下:

/**
     * 获取IP(外网ip、公网ip)
     */
    public static String getNetIp() {
        String IP = "";
        try {
            String address = "http://ip.taobao.com/service/getIpInfo2.php?ip=myip";
            URL url = new URL(address);

            //URLConnection htpurl=url.openConnection();

            HttpURLConnection connection = (HttpURLConnection) url
                    .openConnection();
            connection.setUseCaches(false);
            connection.setRequestMethod("GET");
            connection.setRequestProperty("user-agent",
                    "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.7 Safari/537.36"); //设置浏览器ua 保证不出现503

            if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
                InputStream in = connection.getInputStream();

                // 将流转化为字符串
                BufferedReader reader = new BufferedReader(
                        new InputStreamReader(in));

                String tmpString = "";
                StringBuilder retJSON = new StringBuilder();
                while ((tmpString = reader.readLine()) != null) {
                    retJSON.append(tmpString + "\n");
                }

                JSONObject jsonObject = new JSONObject(retJSON.toString());
                String code = jsonObject.getString("code");

                if (code.equals("0")) {
                    JSONObject data = jsonObject.getJSONObject("data");

                    //格式:180.000.00.000(中国区上海上海电信)
//                    IP = data.getString("ip") + "(" + data.getString("country")
//                            + data.getString("area") + "区"
//                            + data.getString("region") + data.getString("city")
//                            + data.getString("isp") + ")";

                    //格式:180.000.00.000
                    IP = data.getString("ip");

                    LogUtil.e("提示", "您的IP地址是:" + IP);
                } else {
                    IP = "";
                    LogUtil.e("提示", "IP接口异常,无法获取IP地址!");
                }
            } else {
                IP = "";
                LogUtil.e("提示", "网络连接异常,无法获取IP地址!");
            }
        } catch (Exception e) {
            IP = "";
            LogUtil.e("提示", "获取IP地址时出现异常,异常信息是:" + e.toString());
        }
        return IP;

    }

 

你可能感兴趣的:(【,Android,基础开发,】)