宝剑锋从磨砺出,梅花香自苦寒来。这篇文章主要讲述Android 获取外网IP,实测有效相关的知识,希望能为你提供帮助。
【Android 获取外网IP,实测有效】网上有很多获取IP的例子,不过都是获取到的本地ip,还有的是因为走不通了,获取到的ip为空,下面看实测获取到外网IP的代码,注意需要在线程里面执行
/** * 获取外网的IP(要访问Url,要放到后台线程里处理) * * @param @return * @return String * @throws * @Title: GetNetIp * @Description: */ public static String getNetIp() { URL infoUrl = null; InputStream inStream = null; String ipLine = ""; HttpURLConnection httpConnection = null; try { //infoUrl = new URL("http://ip168.com/"); infoUrl = new URL("http://pv.sohu.com/cityjson?ie=utf-8"); URLConnection connection = infoUrl.openConnection(); 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(); String line = null; while ((line = reader.readLine()) != null){ strber.append(line + "\n"); } Pattern pattern = Pattern .compile("((?:(?:25[0-5]|2[0-4]\\d|((1\\d{2})|([1-9]?\\d)))\\.){3}(?:25[0-5]|2[0-4]\\d|((1\\d{2})|([1-9]?\\d))))"); Matcher matcher = pattern.matcher(strber.toString()); if (matcher.find()) { ipLine = matcher.group(); } } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { inStream.close(); httpConnection.disconnect(); } catch (IOException e) { e.printStackTrace(); } catch (Exception ex) { ex.printStackTrace(); } } Log.e("getNetIp", ipLine); return ipLine; }
推荐阅读
- 深入理解Android Instant Run运行机制
- android 练习之路
- 移动端自动化之-----搭建android开发环境
- AndroidStudio 新建不同的Drawable文件夹
- Android项目导入发生的问题
- Android interface接口传值
- Android java.lang.IllegalArgumentException: Object returned from onCreateLoader must not be a non-st
- Android之微信开放平台创建应用
- Android xUtils3.0使用手册 - 数据库操作