Jsp调用淘宝IP地址库获取来访IP详细信息

  示例网页点击:www.trembler.cn/ipinfo/ipinfo(服务器有其他用处,页面已失效)

		String ip = request.getRemoteAddr();//获取来访者IP
String path = "http://ip.taobao.com/service/getIpInfo.php?ip="+ip;//调用淘宝API
URLConnection url = new URL(path).openConnection();
url.connect();//发送GET方法
StringBuilder stringBuilder = new StringBuilder();
BufferedReader reader = new BufferedReader(new InputStreamReader(url.getInputStream(), StandardCharsets.UTF_8));//获取得到的信息
String line = null;
while ((line = reader.readLine())!=null){
stringBuilder.append(line);
}
JSONObject jsonInfo = JSON.parseObject(stringBuilder.toString()); System.out.println(stringBuilder.toString());
  • 代码中的JSONObject是使用了阿里的fastjson类,需要导入这个包,点击下载
  • 上述方法已经在控制台输出了获取到的json格式的IP详细信息,接下来使用阿里fastjson类提取出关键信息。
if(jsonInfo.getString("code").equals("0")){//返回code为0时为正常情况
String data = jsonInfo.getString("data");
JSONObject ipInfo = JSON.parseObject(data);
//接下来要从ipInfo的json中提取出详细信息
pw.println("<table align=center>");
pw.println("<tr align=center>");
pw.println("<td align=right/>ip:");
pw.println("<td align=center/>"+ipInfo.getString("ip"));
pw.println("<tr/>");
pw.println("<tr align=center>");
pw.println("<td align=right/>国家:");
pw.println("<td align=center/>"+ipInfo.getString("country"));
pw.println("<tr/>");
pw.println("<tr align=center>");
pw.println("<td align=right/>国家id:");
pw.println("<td align=center/>"+ipInfo.getString("country_id"));
pw.println("<tr/>");
pw.println("<tr align=center>");
pw.println("<td align=right/>地区:");
pw.println("<td align=center/>"+ipInfo.getString("area"));
pw.println("<tr/>");
pw.println("<tr align=center>");
pw.println("<td align=right/>地区id:");
pw.println("<td align=center/>"+ipInfo.getString("area_id"));
pw.println("<tr/>");
pw.println("<tr align=center>");
pw.println("<td align=right/>省份:");
pw.println("<td align=center/>"+ipInfo.getString("region"));
pw.println("<tr/>");
pw.println("<tr align=center>");
pw.println("<td align=right/>省份id:");
pw.println("<td align=center/>"+ipInfo.getString("region_id"));
pw.println("<tr/>");
pw.println("<tr align=center>");
pw.println("<td align=right/>城市:");
pw.println("<td align=center/>"+ipInfo.getString("city"));
pw.println("<tr/>");
pw.println("<tr align=center>");
pw.println("<td align=right/>城市id:");
pw.println("<td align=center/>"+ipInfo.getString("city_id"));
pw.println("<tr/>");
pw.println("<tr align=center>");
pw.println("<td align=right/>县区:");
pw.println("<td align=center/>"+ipInfo.getString("county"));
pw.println("<tr/>");
pw.println("<tr align=center>");
pw.println("<td align=right/>县区id:");
pw.println("<td align=center/>"+ipInfo.getString("county_id"));
pw.println("<tr/>");
pw.println("<tr align=center>");
pw.println("<td align=right/>运营商:");
pw.println("<td align=center/>"+ipInfo.getString("isp"));
pw.println("<tr/>");
pw.println("<tr align=center>");
pw.println("<td align=right/>运营商id:");
pw.println("<td align=center/>"+ipInfo.getString("isp_id"));
pw.println("<tr/>");
  • 至此就完成了对IP的详细信息的提取

最新文章

  1. ThreadPoolExecutor源码学习(2)-- 在thrift中的应用
  2. Python: 字典的基本操作
  3. C# 3个线程A B C 依次打印123123123..
  4. android 操作sqlite的一点小技巧
  5. Oracle中查看无效的对象、约束、触发器和索引
  6. [rsync+inotify]——监控客户端文件变化,rsync同步到服务器
  7. How To: Perl TCP / UDP Socket Programming using IO::Socket::INET
  8. (转载)更好的重启nginx 服务器
  9. 介绍一个小工具 Linqer
  10. HDU 4716 A Computer Graphics Problem
  11. BFS、双向BFS和A*
  12. iOS标注和适配
  13. AngularJS高级程序设计读书笔记 -- 大纲篇
  14. WebDNN:Web浏览器上最快的DNN执行框架
  15. 【Codeforces Round 650】Codeforces #334 (Div. 1)
  16. 尚硅谷面试第一季-16 JVM垃圾回收机制
  17. 761. Special Binary String
  18. SQLSERVER 导出表数据为insert 语句
  19. Spring项目JUnit测试报错ClassNotFoundException解决
  20. html的那些小小细节

热门文章

  1. PHP将字符串转数组
  2. MySQL数据篇(五)--SQL对数据进行按月统计,或对数据进行按星期统计
  3. grub2详解
  4. 攻防世界pwn之新手区
  5. 201871010113-刘兴瑞《面向对象程序设计(java)》第四周学习总结
  6. Alpha冲刺(1/4)
  7. java程序 cpu占用过高分析
  8. Element-ui 2.8.0版本中提升表格性能,做了哪些事情,原理是什么
  9. 从游击队到正规军:马蜂窝旅游网的IM系统架构演进之路
  10. python正则图片爬取