java根据ip地址获取详细地域信息_伯恩大帝的博客-CSDN博客_java通过ip地址获取地区

互联网有很多接口可以实现通过ip查询到具体的位置,如下:

通过淘宝IP地址库获取IP位置

  1. 请求接口(GET):http://ip.taobao.com/service/getIpInfo.php?ip=[ip地址字串]
  2. 响应信息:(json格式的)国家 、省(自治区或直辖市)、市(县)、运营商
  3. 返回数据格式:
    {“code”:0,”data”:{“ip”:”210.75.225.254”,”country”:”\u4e2d\u56fd”,”area”:”\u534e\u5317”,
    “region”:”\u5317\u4eac\u5e02”,”city”:”\u5317\u4eac\u5e02”,”county”:”“,”isp”:”\u7535\u4fe1”,
    “country_id”:”86”,”area_id”:”100000”,”region_id”:”110000”,”city_id”:”110000”,
    “county_id”:”-1”,”isp_id”:”100017”}}
    其中code的值的含义为,0:成功,1:失败。

新浪的接口 :http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip=218.192.3.42
返回值
var remote_ip_info = {“ret”:1,”start”:”218.192.0.0”,”end”:”218.192.7.255”,”country”:”\u4e2d\u56fd”,”province”:”\u5e7f\u4e1c”,”city”:”\u5e7f\u5dde”,”district”:”“,”isp”:”\u6559\u80b2\u7f51”,”type”:”\u5b66\u6821”,”desc”:”\u5e7f\u5dde\u5927\u5b66\u7eba\u7ec7\u670d\u88c5\u5b66\u9662”};
通过jqry 获取相应的数据
$.getScript(‘数据接口’,function(){
//新浪:remote_ip_info.country
})

腾讯IP分享计划的地址获取IP所在地:
http://ip.qq.com/cgi-bin/searchip?searchip1=ip

用java调用淘宝ip查询接口查询地域的一个java实例:

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
/***  根据IP地址获取详细的地域信息*  @project:personGocheck*  @class:AddressUtils.java*  @author:heguanhua E-mail:37809893@qq.com*  @date:Nov 14, 2012 6:38:25 PM*/
public class AddressUtils { /**** @param content*            请求的参数 格式为:name=xxx&pwd=xxx* @param encoding*            服务器端请求编码。如GBK,UTF-8等* @return* @throws UnsupportedEncodingException*/public String getAddresses(String content, String encodingString)throws UnsupportedEncodingException {// 这里调用pconline的接口String urlStr = "http://ip.taobao.com/service/getIpInfo.php";// 从http://whois.pconline.com.cn取得IP所在的省市区信息String returnStr = this.getResult(urlStr, content, encodingString);if (returnStr != null) {// 处理返回的省市区信息System.out.println(returnStr);String[] temp = returnStr.split(",");if(temp.length<3){return "0";//无效IP,局域网测试}String region = (temp[5].split(":"))[1].replaceAll("\"", "");region = decodeUnicode(region);// 省份String country = "";String area = "";// String region = "";String city = "";String county = "";String isp = "";for (int i = 0; i < temp.length; i++) {switch (i) {case 1:country = (temp[i].split(":"))[2].replaceAll("\"", "");country = decodeUnicode(country);// 国家break;case 3:area = (temp[i].split(":"))[1].replaceAll("\"", "");area = decodeUnicode(area);// 地区 break;case 5:region = (temp[i].split(":"))[1].replaceAll("\"", "");region = decodeUnicode(region);// 省份 break; case 7:city = (temp[i].split(":"))[1].replaceAll("\"", "");city = decodeUnicode(city);// 市区break; case 9:county = (temp[i].split(":"))[1].replaceAll("\"", "");county = decodeUnicode(county);// 地区 break;case 11:isp = (temp[i].split(":"))[1].replaceAll("\"", "");isp = decodeUnicode(isp); // ISP公司break;}}System.out.println(country+"="+area+"="+region+"="+city+"="+county+"="+isp);return region;}return null;}/*** @param urlStr*            请求的地址* @param content*            请求的参数 格式为:name=xxx&pwd=xxx* @param encoding*            服务器端请求编码。如GBK,UTF-8等* @return*/private 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|falseconnection.setDoInput(true);// 是否打开输入流true|falseconnection.setRequestMethod("POST");// 提交方法POST|GETconnection.setUseCaches(false);// 是否缓存true|falseconnection.connect();// 打开连接端口DataOutputStream out = new DataOutputStream(connection.getOutputStream());// 打开输出流往对端服务器写数据out.writeBytes(content);// 写数据,也就是提交你的表单 name=xxx&pwd=xxxout.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 fanhui 2007-3-15* @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();}// 测试public static void main(String[] args) {AddressUtils addressUtils = new AddressUtils();// 测试ip 219.136.134.157 中国=华南=广东省=广州市=越秀区=电信String ip = "125.70.11.136";String address = "";try {address = addressUtils.getAddresses("ip="+ip, "utf-8");} catch (UnsupportedEncodingException e) {// TODO Auto-generated catch blocke.printStackTrace();}System.out.println(address);// 输出结果为:广东省,广州市,越秀区}
}  

java根据ip地址获取详细地域信息相关推荐

  1. 【转载】 java根据ip地址获取详细地域信息

    互联网有很多接口可以实现通过ip查询到具体的位置,如下: 通过淘宝IP地址库获取IP位置 1. 请求接口(GET):http://ip.taobao.com/service/getIpInfo.php ...

  2. java根据ip地址获取城市地域信息

    java根据ip地址获取城市地域信息 这里提供两个公开的接口,一个是阿里的,一个是新浪的 http://ip.taobao.com/service/getIpInfo.php?ip=123.139.9 ...

  3. java 根据IP地址获取地理位置

    来源:http://www.ipplus360.com/tech/api/ 来源:http://blog.csdn.net/Cryhelyxx/article/details/40862101 精确查 ...

  4. 6种根据IP地址获取相应城市信息的接口

    发这篇文章的最主要的目的就是给大家分享一个 免费快捷根据IP地址获取相应城市信息的接口--腾讯接口 在找到个腾讯接口之前,我试也用了很多接口,比如:淘宝,新浪等,下面挨个介绍 (ps:$ip是IP地址 ...

  5. Java 根据IP地址获取城市(ip2region)

    根据IP地址获取城市(ip2region) Ip2region是什么? Ip2region特性 99.9%准确率 标准化的数据格式 体积小 查询速度快 多查询客户端的支持 maven集成 小坑 Ip2 ...

  6. java通过ip地址获取相应对应的城市

    发现了一比较好的本地ip对应地址的库资源文件--做一下笔记. 官方网站 https://dev.maxmind.com/geoip/geoip2/geolite2/ 这里提供了免费的库文件,还有很好的 ...

  7. JAVA根据IP地址获取省份城市和经纬度(可获取国家名称 淘宝高德API如果是国外IP获取到的为空)

    所需jar包maven地址: <!-- 根据ip获取位置 --><dependency><groupId>com.maxmind.geoip2</groupI ...

  8. 根据ip地址获取相关区域信息

    <?php /*** 基于淘宝的ipAPI 根据ip地址 返回所在地* @author L.D.B* 2012/09/12*/ header("Content-type:text/ht ...

  9. 获取地区html代码,根据ip地址获取所在城市信息(省市县)代码

    [实例简介] [实例截图] [核心代码] 获取ip地址所在城市 var showIP = function(ip, remote_ip_info ){ if(remote_ip_info['ret'] ...

  10. Java根据ip地址获取归属地

    由于最近比较忙,所以一直没有更新博客.今天有一点点时间,来分享一下项目中用到的一个需求功能点. 需求描述:获取用户真实ip和ip归属地 实现效果:  重点: IP地址工具类 import cn.hut ...

最新文章

  1. VS2010中获取并调用CRM2011中的工作流
  2. python没基础可以学吗-无基础学python,能学会吗?
  3. poj1979 深度优先搜索 挑战程式设计竞赛
  4. 微信小程序学习笔记01:微信小程序概述
  5. 新浪Linux运维工程师面试真题曝光
  6. 几何画板椭圆九种画法_椭圆的标准方程课堂(几何画板动画版).ppt
  7. 如何基于 Spark Streaming 构建实时计算平台
  8. Vivado 错误代码 [DRC PDCN-2721] 解决
  9. 龙果学院Java并发编程原理与实战
  10. 【阿里云生活物联网架构师专题 ⑥】ESP8266接入阿里生活飞燕平台国际版,实现亚马逊Alexa Echo音响语音控制;
  11. 万和计算机学院,万和亿的换算(万和亿的换算计算器)
  12. 千兆宽带网接入电脑电脑却只有百兆
  13. 123457123457#0#-----com.yuming.YiZhiFanPai01--前拼后广--益智早教游戏记忆翻牌cym
  14. OSChina 周日乱弹 —— 每天叫醒我的是Bug
  15. Python中tkinter模块的学习记录(一)
  16. Freemarker生成word:导出多张图片list、同时导出文字+图片的list
  17. python判断素数的方法简书_深入浅出RSA在CTF中的攻击套路
  18. python爬取歌曲教程_歌曲网站,教你爬取 mp3 和 lyric
  19. 时间序列预测新范式——基于迁移学习的AdaRNN方法
  20. spark:Action算子:show()

热门文章

  1. 单片机 74HC573
  2. 申请《App电子版权认证证书》或纸质《计算机软件著作权证书》
  3. 教师-学生网络下Self-Ensembing with GAN-based Data Augmentation for Domain Adaption in Sematic Segmentation
  4. 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
  5. 电脑硬件基础知识科普
  6. 虚拟机的三种网络连接方式
  7. 无网络环境安装docker
  8. DASCTF X GFCTF 2022十月挑战赛 WriteUp
  9. 金融级云服务 平安云赋能保险业创新发展
  10. 【零样本学习】Zero-Shot Learning via Class-Conditioned Deep Generative Models