IP工具类-自己动手做个ip解析器

一、资料准备

导入依赖包:

aaarticlea/png;base64,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" alt="" />

下载地址:http://yunpan.cn/cLHfYZQMn65Qq  访问密码 6090

如果不用阿里巴巴的请求。则不用导入阿里巴巴的jar包。只需导入解析纯真数据库需要的jar即可。

JSon包可导可不导。

二、实现代码

方法一、通过查询数据库实现

方法二、通过调用alibaba的ip数据库查询得出。

以下是详细的实现代码:

package com.souvc.common.base;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.InetAddress;
import java.net.MalformedURLException;
import java.net.ProtocolException;
import java.net.URL;
import java.net.UnknownHostException; import javax.servlet.http.HttpServletRequest; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.handsome.ip.IPSeeker;
/**
* 类名: IPUtil </br>
* 描述: ip 工具类 </br>
* 开发人员:souvc</br>
* 创建时间: 2015-11-10 </br>
* 发布版本:V1.0 </br>
*/
public class IPUtil { /**
* 方法名:getIpAddr</br>
* 详述:获取IP地址</br>
* 开发人员:souvc </br>
* 创建时间:2015-11-10 </br>
* @param request
* @return
* @throws
*/
public static String getIpAddr(HttpServletRequest request) {
String ipAddress = request.getHeader("x-forwarded-for");
if (ipAddress == null || ipAddress.length() == 0
|| "unknown".equalsIgnoreCase(ipAddress)) {
ipAddress = request.getHeader("Proxy-Client-IP");
}
if (ipAddress == null || ipAddress.length() == 0
|| "unknown".equalsIgnoreCase(ipAddress)) {
ipAddress = request.getHeader("WL-Proxy-Client-IP");
}
if (ipAddress == null || ipAddress.length() == 0
|| "unknown".equalsIgnoreCase(ipAddress)) {
ipAddress = request.getRemoteAddr();
if (ipAddress.equals("127.0.0.1")
|| ipAddress.equals("0:0:0:0:0:0:0:1")) {
// 根据网卡取本机配置的IP
InetAddress inet = null;
try {
inet = InetAddress.getLocalHost();
} catch (UnknownHostException e) {
e.printStackTrace();
}
ipAddress = inet.getHostAddress();
}
}
// 对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割
if (ipAddress != null && ipAddress.length() > 15) { // "***.***.***.***".length()
// = 15
if (ipAddress.indexOf(",") > 0) {
ipAddress = ipAddress.substring(0, ipAddress.indexOf(","));
}
}
return ipAddress;
} /**
* 方法名:getIpRealAddr</br>
* 详述:获取真实名称</br>
* 开发人员:souvc</br>
* 创建时间:2015-11-10 </br>
* @param ip
* @return
* @throws
*/
public static String getIpRealAddr(String ip) {
//指定纯真数据库的文件名,所在文件夹
String address = "";
try {
IPSeeker ipseeker=new IPSeeker("IpToAdd.Dat", "E:\\ipdata");
address = ipseeker.getIPLocation(ip).getCountry();
} catch(Exception e) {
}
//获得国家地区
return address;
} /**
* 方法名:getArea</br>
* 详述:获取运营商 </br>
* 开发人员:souvc </br>
* 创建时间:2015-11-10 </br>
* @param ip
* @return
* @throws
*/
public static String getArea(String ip) {
//指定纯真数据库的文件名,所在文件夹
String area = "";
try {
IPSeeker ipseeker=new IPSeeker("IpToAdd.Dat", "E:\\ipdata");
area=ipseeker.getArea(ip);
} catch(Exception e) {
}
return area;
} /**
* 方法名:getIpInfo</br>
* 详述:通过IP获取地址(需要联网,调用淘宝的IP库)</br>
* 开发人员:souvc </br>
* 创建时间:2015-11-10 </br>
* @param ip
* @return
* @throws
*/
public static String getIpInfo(String ip) {
if (ip.equals("本地")) {
ip = "127.0.0.1";
}
String info = "";
try {
URL url = new URL("http://ip.taobao.com/service/getIpInfo.php?ip=" + ip);
HttpURLConnection htpcon = (HttpURLConnection) url.openConnection();
htpcon.setRequestMethod("GET");
htpcon.setDoOutput(true);
htpcon.setDoInput(true);
htpcon.setUseCaches(false); InputStream in = htpcon.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(in));
StringBuffer temp = new StringBuffer();
String line = bufferedReader.readLine();
while (line != null) {
temp.append(line).append("\r\n");
line = bufferedReader.readLine();
}
bufferedReader.close();
JSONObject obj = (JSONObject) JSON.parse(temp.toString());
if (obj.getIntValue("code") == 0) {
JSONObject data = obj.getJSONObject("data");
info += data.getString("country") + " ";
info += data.getString("region") + " ";
info += data.getString("city") + " ";
info += data.getString("isp");
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (ProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return info;
} /**
* 方法名:main</br>
* 详述:测试方法</br>
* 开发人员:souvc </br>
* 创建时间:2015-11-10 </br>
* @param args
* @throws
*/
public static void main(String[] args) {
String country =getIpRealAddr("14.23.59.170");
String area =getArea("14.23.59.170");
String getIpInfo =getIpInfo("14.23.59.170");
System.out.println(country);
System.out.println(area);
System.out.println(getIpInfo); } }

效果如下:

美国
ATT用户
中国 广东省 广州市 电信

方法三:通过百度api查询得出。

package com.souvc.weixin.util;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Map; import net.sf.json.JSONObject; public class TestIP { public static void main(String[] args) {
String httpUrl = "http://apis.baidu.com/apistore/iplookupservice/iplookup";
String httpArg = "ip=117.89.35.58";
String jsonResult = request(httpUrl, httpArg);
//System.out.println(jsonResult);
JSONObject jasonObject = JSONObject.fromObject(jsonResult);
System.out.println(jasonObject);
System.out.println(jasonObject.get("errNum"));
System.out.println(jasonObject.get("errMsg"));
System.out.println(jasonObject.get("retData"));
Map map=(Map) jasonObject.get("retData");
System.out.println(map.get("ip"));
System.out.println(map.get("country"));
System.out.println(map.get("province"));
System.out.println(map.get("city"));
System.out.println(map.get("district"));
System.out.println(map.get("carrier"));
} /**
* @param urlAll
* :请求接口
* @param httpArg
* :参数
* @return 返回结果
*/
public static String request(String httpUrl, String httpArg) {
BufferedReader reader = null;
String result = null;
StringBuffer sbf = new StringBuffer();
httpUrl = httpUrl + "?" + httpArg;
try {
URL url = new URL(httpUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
// 填入apikey到HTTP header
connection.setRequestProperty("apikey", "xxx");
connection.connect();
InputStream is = connection.getInputStream();
reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
String strRead = null;
while ((strRead = reader.readLine()) != null) {
sbf.append(strRead);
sbf.append("\r\n");
}
reader.close();
result = sbf.toString();
} catch (Exception e) {
e.printStackTrace();
}
return result;
} }

注意,替换成自己的百度api的apikey 。

IP工具类-自己动手做个ip解析器的更多相关文章

  1. IP工具类

    import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.servlet.http.HttpServletReques ...

  2. Java常用工具类---IP工具类、File文件工具类

    package com.jarvis.base.util; import java.io.IOException;import java.io.InputStreamReader;import jav ...

  3. 系统获取 IP 工具类

    系统获取 IP 工具类 import java.net.Inet4Address; import java.net.InetAddress; import java.net.NetworkInterf ...

  4. Java 获取IP工具类、Vo类整理记录

    前言 日常开发中,获取ip是常用的功能,本文记录如何在Java中获取本机外网ip.地理位置,访问用户的外网ip.地理位置,以及指定外网ip的地理位置: 代码编写 1.获取访问用户外网ip,我们从访问者 ...

  5. java获取真实ip工具类

    场景 有的时候我们需要获取客户端的真实ip,用来实现ip白名单,和黑名单的配置! ip工具类如下 package com.meeno.framework.utils; import javax.ser ...

  6. 获取请求的ip工具类

    package com.example.util; import javax.servlet.http.HttpServletRequest; /** * get remote msg * 获取访问的 ...

  7. C#获取客户端Ip工具类

    string pcname = Dns.GetHostName(); string ip = Dns.GetHostAddresses(pcname).First().ToString(); usin ...

  8. 【java工具类】java做的一个xml转Excel工具,基于maven工程

    说明:适合数据库导出为xml时转成Excel 本工具将上传至GitHub:https://github.com/xiaostudy/xiaostudyAPI3 doc4j的maven依赖 <!- ...

  9. Lucene第二篇【抽取工具类、索引库优化、分词器、高亮、摘要、排序、多条件搜索】

    对Lucene代码优化 我们再次看回我们上一篇快速入门写过的代码,我来截取一些有代表性的: 以下代码在把数据填充到索引库,和从索引库查询数据的时候,都出现了.是重复代码! Directory dire ...

随机推荐

  1. C#字符串的恒定性

    string str1="aa"; string str2="aa"; str1,str2,变量所指向的堆空间的地址是一样的.栈空间的内容是不一样的. //ne ...

  2. MVC知识点01

    1:母版页都 放在View/Shared里面,而且全部的视图页面都可以去用母板页. **母板的应用要用到嵌套,@RenderBody();将别的网页的内容全部显示在此处,它就相当于一个占位符. 2:架 ...

  3. C#设计模式——组合模式(Composite Pattern)

    一.概述 在软件开发中,我们往往会遇上类似树形结构的对象体系.即某一对象既可能在树形结构中作为叶节点存在,也可能作为分支节点存在.比如在文件系统中,文件是作为叶节点存在,而文件夹就是分支节点.在设计这 ...

  4. ext 树节点操作

    ext 树节点操作 tree :树    node:节点 1.全部展开 tree.expandAll(); 2.全部收缩 tree.collapseAll(); 3.得到父节点 node.parent ...

  5. DevExpress GridControl功能总结

    写在前面,Dev控件已经很久了,功能也很强大,截止到现在我编写文档出来的Dev的版本已经到了14.1了,看了Demo真的很强大,效果也很好,结合自己这一个月开发,分享一下自己研究过后的经验,不让大家走 ...

  6. String系列

    String 简介 String 是java中的字符串,它继承于CharSequence.String类所包含的API接口非常多.为了便于今后的使用,我对String的API进行了分类,并都给出的演示 ...

  7. IT外包行业与职业发展

          在IT行业,总是有一些IT外包公司的存在,凡是存在的都是合理的.当你做为IT从业人员应该尽量避免去外包公司工作 .特别是你从事软件开发工作.     先来说说缘由,一些外包公司本来是从事软 ...

  8. Atitit. Atiposter 发帖机 新特性 poster new feature   v7 q39

    Atitit. Atiposter 发帖机 新特性 poster new feature   v7 q39 V1  初步实现sina csdn cnblogs V2  实现qzone sohu 的发帖 ...

  9. MySql中时间类型总结

    最近建表要用到时间类型的数据,但对时间类型的数据一向不了解,就总结了一下.. 一.日期DATE 一个日期.支持的范围是“1000-01-01”以“9999-12-31”.MySQL显示日期用 “YYY ...

  10. 迭代器 iterator(二): 用iterator遍历arraylist

           迭代器(iterator)是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表容器中的确定的地址.迭代器修改了常规指针的接口,所谓迭代器是一种概念上的抽象:那些 ...