根据IP获取城市信息,淘宝提供了AIP,可以帮助我们做这个功能。
相关地址:http://ip.taobao.com/index.php
接口说明:
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:失败。
下面我们就用java来做一个请求,并解析返回的内容:
package http; import net.sf.json.*; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.SimpleHttpConnectionManager; import org.apache.commons.httpclient.methods.GetMethod; import org.apache.commons.httpclient.params.HttpClientParams; public class GetIpAdd { public static void main(String[] args) throws Exception { String url = "http://ip.taobao.com/service/getIpInfo.php?ip=125.34.6.143"; HttpClient client = new HttpClient(new HttpClientParams(),new SimpleHttpConnectionManager(true)); client.getHttpConnectionManager().getParams().setConnectionTimeout(15000); // 通过网络与服务器建立连接的超时时间 client.getHttpConnectionManager().getParams().setSoTimeout(60000); // Socket读数据的超时时间,即从服务器获取响应数据需要等待的时间 GetMethod method = new GetMethod(url); method.setRequestHeader("Content-Type", "text/html;charset=UTF-8"); // 防止乱码 client.executeMethod(method); String jsonString = method.getResponseBodyAsString(); System.out.println(jsonString); // {"code":0,"data":{"country":"\u4e2d\u56fd","country_id":"CN","area":"\u534e\u5317","area_id":"100000", //"region":"\u5317\u4eac\u5e02","region_id":"110000","city":"\u5317\u4eac\u5e02","city_id":"110000","county":"\u671d\u9633\u533a", //"county_id":"110105","isp":"\u8054\u901a","isp_id":"100026","ip":"125.34.6.143"}} JSONObject jsonObj = JSONObject.fromObject(jsonString); String dataJson = jsonObj.getString("data"); // data的值本身就是一个json串,所以获取这个字符串,然后再解析为JSON对象,来获取其中的属性 JSONObject dataObj = JSONObject.fromObject(dataJson); System.out.println(dataObj.getString("country")); // 中国 System.out.println(dataObj.getString("country_id")); // CN System.out.println(dataObj.getString("area")); // 华北 System.out.println(dataObj.getString("area_id")); // 100000 System.out.println(dataObj.getString("region")); // 北京市 System.out.println(dataObj.getString("region_id")); // 110000 System.out.println(dataObj.getString("city")); // 北京市 System.out.println(dataObj.getString("city_id")); // 110000 System.out.println(dataObj.getString("county")); // 朝阳区 System.out.println(dataObj.getString("county_id")); // 110105 System.out.println(dataObj.getString("isp")); // 联通 System.out.println(dataObj.getString("isp_id")); // 100026 } }
这样,我们就获取了其中的一个属性。
需要的JAR包:
点击上面进行下载。
Java小强
未曾清贫难成人,不经打击老天真。
自古英雄出炼狱,从来富贵入凡尘。
发表评论: