直接贴代码了,不多说了
public class AddressUtils {/*** 将返回的信息编码格式改为自己设定的编码格式* @author MOSHUNWEI* @param content *            请求的参数 格式为:name=xxx&pwd=xxx * @param encoding *            服务器端请求编码。如GBK,UTF-8等 * @return * @throws UnsupportedEncodingException */  public static String getAddresses(String content, String encodingString)  throws UnsupportedEncodingException {  // 这里调用淘宝API  String urlStr = "http://ip.taobao.com/service/getIpInfo.php"; // 从http://whois.pconline.com.cn取得IP所在的省市区信息  // String urlStr = "http://whois.pconline.com.cn"; String returnStr = getResult(urlStr, content, encodingString);  if (returnStr != null) {  // 处理返回的省市区信息  returnStr = decodeUnicode(returnStr);  String[] temp = returnStr.split(",");  if(temp.length<3){  return "0";//无效IP,局域网测试  }  return returnStr;  }  return null;  }  /** * http请求,返回ip的详细信息* @author MOSHUNWEI* @param urlStr *            请求的地址 * @param content *            请求的参数 格式为:name=xxx&pwd=xxx * @param encoding *            服务器端请求编码。如GBK,UTF-8等 * @return */  private static String getResult(String urlStr, String content, String encoding) {  URL url = null;  HttpURLConnection connection = null;  try {  url = new URL(urlStr);  connection = (HttpURLConnection) url.openConnection();// 新建连接实例  connection.setConnectTimeout(2000);// 设置连接超时时间,单位毫秒  connection.setReadTimeout(2000);// 设置读取数据超时时间,单位毫秒  connection.setDoOutput(true);// 是否打开输出流 true|false  connection.setDoInput(true);// 是否打开输入流true|false  connection.setRequestMethod("POST");// 提交方法POST|GET  connection.setUseCaches(false);// 是否缓存true|false  connection.connect();// 打开连接端口  DataOutputStream out = new DataOutputStream(connection  .getOutputStream());// 打开输出流往对端服务器写数据  out.writeBytes(content);// 写数据,也就是提交你的表单 name=xxx&pwd=xxx  out.flush();// 刷新  out.close();// 关闭输出流  BufferedReader reader = new BufferedReader(new InputStreamReader(  connection.getInputStream(), encoding));// 往对端写完数据对端服务器返回数据  // ,以BufferedReader流来读取  StringBuffer buffer = new StringBuffer();  String line = "";  while ((line = reader.readLine()) != null) {  buffer.append(line);  }  reader.close();  return buffer.toString();  } catch (IOException e) {  e.printStackTrace();  } finally {  if (connection != null) {  connection.disconnect();// 关闭连接  }  }  return null;  }  /** * unicode 转换成 中文 *  * @author MOSHUNWEI* @param theString * @return 设定的编码格式*/  public static String decodeUnicode(String theString) {  char aChar;  int len = theString.length();  StringBuffer outBuffer = new StringBuffer(len);  for (int x = 0; x < len;) {  aChar = theString.charAt(x++);  if (aChar == '\\') {  aChar = theString.charAt(x++);  if (aChar == 'u') {  int value = 0;  for (int i = 0; i < 4; i++) {  aChar = theString.charAt(x++);  switch (aChar) {  case '0':  case '1':  case '2':  case '3':  case '4':  case '5':  case '6':  case '7':  case '8':  case '9':  value = (value << 4) + aChar - '0';  break;  case 'a':  case 'b':  case 'c':  case 'd':  case 'e':  case 'f':  value = (value << 4) + 10 + aChar - 'a';  break;  case 'A':  case 'B':  case 'C':  case 'D':  case 'E':  case 'F':  value = (value << 4) + 10 + aChar - 'A';  break;  default:  throw new IllegalArgumentException(  "Malformed      encoding.");  }  }  outBuffer.append((char) value);  } else {  if (aChar == 't') {  aChar = '\t';  } else if (aChar == 'r') {  aChar = '\r';  } else if (aChar == 'n') {  aChar = '\n';  } else if (aChar == 'f') {  aChar = '\f';  }  outBuffer.append(aChar);  }  } else {  outBuffer.append(aChar);  }  }  return outBuffer.toString();  }   /*** 通过ip获取详细的地区(城市)* @param ip 入参* @return 返回map,key-value说明:country=国家,area=地区,region=省,city=城市,county=县/区* isp=通讯商,country_id=国家编号,area_id=地区号,region_id=省编号,city_id=市编号,* county_id=县/区编号,isp_id=国家通讯公司号* @author MOSHUNWEI*/public static Map<String,String> getMap(String ip){Map<String,String> resultMap = new HashMap<String,String>();String json_result = null;try {  json_result = AddressUtils.getAddresses("ip=" + ip, "utf-8"); } catch (UnsupportedEncodingException e) {  e.printStackTrace();  }JSONObject json = JSONObject.fromObject(json_result);  String country = JSONObject.fromObject(json.get("data")).get("country").toString();  String area = JSONObject.fromObject(json.get("data")).get("area").toString(); String region = JSONObject.fromObject(json.get("data")).get("region").toString();  String city = JSONObject.fromObject(json.get("data")).get("city").toString();  String county = JSONObject.fromObject(json.get("data")).get("county").toString();  String isp = JSONObject.fromObject(json.get("data")).get("isp").toString();  String country_id = JSONObject.fromObject(json.get("data")).get("country_id").toString();String area_id = JSONObject.fromObject(json.get("data")).get("area_id").toString();String region_id = JSONObject.fromObject(json.get("data")).get("region_id").toString();String city_id = JSONObject.fromObject(json.get("data")).get("city_id").toString();String county_id = JSONObject.fromObject(json.get("data")).get("county_id").toString();String isp_id = JSONObject.fromObject(json.get("data")).get("isp_id").toString();resultMap.put("country", country);resultMap.put("area", area);resultMap.put("region", region);resultMap.put("city", city);resultMap.put("county", county);resultMap.put("isp", isp);resultMap.put("country_id", country_id);resultMap.put("area_id", area_id);resultMap.put("region_id", region_id);resultMap.put("city_id", city_id);resultMap.put("county_id", county_id);resultMap.put("isp_id", isp_id);return resultMap;}/*** 测试* @author MOSHUNWEI* @param args*/public static void main(String[] args)   {  try{  System.out.println(AddressUtils.getMap("119.29.58.21").toString());}  catch (Exception e){  e.printStackTrace();  }  }
}

通过ip获取用户所在地相关推荐

  1. 百度接口通过ip获取用户所在地

    以下是我看到的资料,我在引擎中用插件连接了"http://opendata.baidu.com/api.php?query=" + strIP+"&co=& ...

  2. PHP根据IP获取当前所在地地址

    原理简述: 利用"ip.taobao.com"提供的一个功能,先获取json格式字符串,再解码json字符串 新建文件getaddress.class.php: <?php ...

  3. 根据ip获取用户地址-百度

    2019独角兽企业重金招聘Python工程师标准>>> 百度的Api:GET请求 https://openapi.baidu.com/rest/2.0/iplib/query?acc ...

  4. 使用ajax获取用户所在地的天气

    1.要获取用户归属地的天气,首先得获取用户所在的市区, 这里先获取用户的IP,通过IP获取IP的归属地,从而得到用户 地址. 获取客户端ip: js: <scripttype="tex ...

  5. 通过用户电脑ip获取用户当前所在城市以及天气

    1.先获取当前用户得ip地址 $.ajax({               url: 'http://pv.sohu.com/cityjson?ie=utf-8',               dat ...

  6. uni-app获取用户所在地

    定位成功,返回城市地址的信息 获得用户城市 我试了很久没有问题 有问题的是我的代码,还有模拟器上的模拟定位   =-= <!-- 页面渲染 --><view class=" ...

  7. java ip 国家_java通过ip获取用户所在国家 | 学步园

    什么是GeoIP ? 所谓GeoIP,就是通过来访者的IP, 定位他的经纬度,国家/地区,省市,甚至街道等位置信息的一个数据库.GeoIP有两个版本,一个免费版,一个收费版本.收费版本的准确率和数据更 ...

  8. vue获取用户本机ip方法

    记录vue获取用户本机ip方法 <script setup> import { reactive, toRefs ,onMounted} from "vue" cons ...

  9. pc端js获取当前经纬度_js获取用户当前地理位置(省、市、经纬度)

    在很多情况下,我们需要用到定位功能,来获取用户当前位置.当前比较流行的定位API有腾讯地图.百度地图.高德地图.搜狗地图等等,在这里我使用的是腾讯地图定位API,根据用户IP获取用户当前位置,API返 ...

  10. html5经纬度定位 源码_h5实现获取用户地理定位的实例代码

    最近做的一个项目中有一个获取周围商户的功能,需要用到地理定位系统, 于是便想到了用 h5 的地理定位,查阅了下资料后,简单封装了下代码. const getPosition = ( timeout = ...

最新文章

  1. python与c语言在语法上的区别-C语言和Python编程先学习哪个
  2. 卡巴斯基文件服务器,卡巴斯基更新服务器的解决方案
  3. RH442-3 队列技术
  4. 中国已消失的九所世界级大学
  5. 图---Dijstra
  6. HDU - 1028——母函数入门
  7. 2011年的MVP礼包
  8. Geth搭建以太坊主网公有节点笔记
  9. Intellij IDEA 通过数据库表逆向生成带注释的实体类文件超级详细步骤,附详细解决方案
  10. Linux /boot分区空间不足
  11. Windows 7安全指南
  12. 删除root 家目录,及恢复方法
  13. http中url的长度限制
  14. 课题:交通标志识别——设计思路与实现步骤记录
  15. iOS播放器常用功能
  16. Qt示例程序打开失败,出现一个感叹号图标
  17. python执行pip指令时,提示“You should consider upgrading……”的解决方法
  18. c#文本文件文本替换_如何替换许多文件中存在的文本?
  19. 计算机专业英语博士就业情况,北京外国语大学博士就业前景怎么样
  20. 关于微功率短距离无线电发射设备,无需做SRRC认证

热门文章

  1. 当一个正整数能被2或者3或者5或者7整除,我们定义这个数为or2数 给定正整数 , 求问这个数
  2. 计算机类试题库,银保监会考试题库:计算机类模拟试题练习(七)答案
  3. 52.【Java 数据结构——线性表】
  4. 抓取预测二手车价格的机器学习模型
  5. Vue-案列-todelist
  6. 在安卓中使用SVG矢量图
  7. 英语二能免考计算机专业英语吗,自考本科考哪几门?英语二可以这样免考!
  8. vue的分页打印功能
  9. VC++在Win7和Win8系统下获得百度输入法的名字
  10. Ubuntu 下Caffe的安装过程 -- 之一