获取手机(客户端)外网IP

    xiaoxiao2022-07-04  169

    需求:由于项目需求,需要获取用户手机外网IP。

    这里是用到搜狐的IP地址查询接口,如下:

    搜狐IP地址查询接口(默认GBK):http://pv.sohu.com/cityjson 搜狐IP地址查询接口(可设置编码):http://pv.sohu.com/cityjson?ie=utf-8

    返回json如下:

    var returnCitySN = {"cip": "210.22.130.114", "cid": "310000", "cname": "上海市"};

    这里的话,我这里就直接开启线程,获取手机的IP:

    代码如下:

    //获取手机外网IP new Thread(new Runnable() { @Override public void run() { URL infoUrl = null; InputStream inStream = null; String line = ""; try { infoUrl = new URL("http://pv.sohu.com/cityjson?ie=utf-8"); URLConnection connection = infoUrl.openConnection(); HttpURLConnection httpConnection = (HttpURLConnection) connection; int responseCode = httpConnection.getResponseCode(); if (responseCode == HttpURLConnection.HTTP_OK) { inStream = httpConnection.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(inStream, "utf-8")); StringBuilder strber = new StringBuilder(); while ((line = reader.readLine()) != null) strber.append(line + "\n"); inStream.close(); // 从反馈的结果中提取出IP地址 int start = strber.indexOf("{"); int end = strber.indexOf("}"); String json = strber.substring(start, end + 1); if (json != null) { try { JSONObject jsonObject = new JSONObject(json); line = jsonObject.optString("cip"); MLog.e("ip", "ip==========================" + line); } catch (JSONException e) { e.printStackTrace(); } } SPUtils.putString(Constant.IP, line); } } catch (Exception e) { e.printStackTrace(); //拿不到IP的情况,给个默认值 SPUtils.putString(Constant.IP, "192.168.1.1"); } } }).start();

     

    最新回复(0)