原理是根据淘宝提供的service查询IP的归属地并且解析http请求返回的json串。
我之前也是伸手党,现在也给伸手党提供下方便。
淘宝返回的数据为:
{"code":0,"data":{"country":"\u4e2d\u56fd","country_id":"CN","area":"\u534e\u4e1c","area_id":"300000","region":"\u5c71\u4e1c\u7701","region_id":"370000","city":"\u4e1c\u8425\u5e02","city_id":"370500","county":"","county_id":"-1","isp":"\u8054\u901a","isp_id":"100026","ip":"60.214.183.158"}}
用法:
String arr1 = GetAddressByIp.GetAddressByIp("120.192.182.1");
System.out.println(arr1);
详细请看代码
package getAddressByIp;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import net.sf.json.JSONObject;
public class GetAddressByIp
{
/**
*
* @param IP
* @return
*/
public static String GetAddressByIp(String IP){
String resout = "";
try{
String str = getJsonContent("http://ip.taobao.com/service/getIpInfo.php?ip="+IP);
System.out.println(str);
JSONObject obj = JSONObject.fromObject(str);
JSONObject obj2 = (JSONObject) obj.get("data");
String code = (String) obj.get("code");
if(code.equals("0")){
resout = obj2.get("country")+"--" +obj2.get("area")+"--" +obj2.get("city")+"--" +obj2.get("isp");
}else{
resout = "IP地址有误";
}
}catch(Exception e){
e.printStackTrace();
resout = "获取IP地址异常:"+e.getMessage();
}
return resout;
}
public static String getJsonContent(String urlStr)
{
try
{// 获取HttpURLConnection连接对象
URL url = new URL(urlStr);
HttpURLConnection httpConn = (HttpURLConnection) url
.openConnection();
// 设置连接属性
httpConn.setConnectTimeout(3000);
httpConn.setDoInput(true);
httpConn.setRequestMethod("GET");
// 获取相应码
int respCode = httpConn.getResponseCode();
if (respCode == 200)
{
return ConvertStream2Json(httpConn.getInputStream());
}
}
catch (MalformedURLException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
return "";
}
private static String ConvertStream2Json(InputStream inputStream)
{
String jsonStr = "";
// ByteArrayOutputStream相当于内存输出流
ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = 0;
// 将输入流转移到内存输出流中
try
{
while ((len = inputStream.read(buffer, 0, buffer.length)) != -1)
{
out.write(buffer, 0, len);
}
// 将内存流转换为字符串
jsonStr = new String(out.toByteArray());
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return jsonStr;
}
}
分享到:
相关推荐
java联网查询IP归属地,原理是根据淘宝提供的service查询IP的归属地并且解析http请求返回的json串
内外网切换工具,用java写的,目前在XP上可以使用!
本程序基于SOcket编程,实现从IP138网站截取得到对应IP地址的地域信息,比如省份,城市等信息
MFC开发,根据ip地址查询所在地,有查询本地库QQWry.dat,和上网查询两种方式。如果是上网查询,最好将方法放到线程中,因为网络的缘故会卡。
网站IP地址查询小工具! 个人用JAVA写的简单东西,不过在联网时,能准确查到域名所对应的IP地址!
C#获取局域网内所有联网设备的IP地址和MAC地址
ip地址原理 对网络方面感兴趣的朋友们不得不看
超级好用的IP地址更改工具!可以定时更改IP地址.
手机上网后,打开程序,ip地址就显示出来了。
你有没有遇到过这种情况:在家里笔记本设置好了上网自动获取IP地址,但是到了单位却是分配的固定IP地址,每次上班和回到家里都要重新设置,不胜其烦,现在好了,有了IP地址切换器,只要预先设置好家里和单位的网络...
IP地址:在控制面板里找到网络连接,并在网络连接里找你上网的那个连接(局域网的话一般是“本地连接”)右键你的连接,选择“状态”­详细信息,那个客户端IP地址就是你的IP地址。> 或者也可以用这个方法:开始...
C#实现获取多网卡IP地址方法,该方法可以遍历出所有网卡的IP地址。
获取手机所处网络的IP地址。WIFI联网是可获得外网和各层路由得IP地址
五号板卡联网打印IP地址和打印机设定
你可能有这样的体会,开机进入桌面后,点击桌面上的图标,点这个...但在局域网上网(用路由器上网就属此类),用的是本地连接,因此本地连接的IP必须要正确(要么接受自动分配,要么手动填入正确的IP地址,方可上网)。
本文实例讲述了C#实现获取本地内网(局域网)和外网(公网)IP地址的方法。分享给大家供大家参考,具体如下: 1、获取本机的IP地址集合: /// /// 获取本机所有ip地址 /// /// <param name=netType>InterNetwork:...
你可能有这样的体会,开机进入桌面后,点击桌面上的图标,点这个...但在局域网上网(用路由器上网就属此类),用的是本地连接,因此本地连接的IP必须要正确(要么接受自动分配,要么手动填入正确的IP地址,方可上网)。
C#实现获取局域网内所有计算机的IP地址和MAC地址的控制台应用程序源码 程序启动时首先获取本机的IP和MAC地址; 然后获取局域网内所有计算机的IP地址; 输入IP地址回车,获取该IP的MAC地址; 输入“STARTSCAN”回车...