- 2023-08-21 13:33:29
- 9790 热度
- 0 评论
根据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包:
点击上面进行下载。
0 评论
留下评论
热门标签
- Spring(403)
- Boot(208)
- Spring Boot(187)
- Java(82)
- Cloud(82)
- Spring Cloud(82)
- Security(60)
- Spring Security(54)
- Boot2(51)
- Spring Boot2(51)
- Redis(31)
- SQL(29)
- Mysql(25)
- IDE(24)
- Dalston(24)
- JDBC(22)
- IDEA(22)
- mongoDB(22)
- MVC(22)
- Web(21)
- CLI(20)
- Alibaba(19)
- SpringMVC(19)
- SpringBoot(17)
- Docker(17)
- Git(16)
- Eclipse(16)
- Vue(16)
- ORA(15)
- JPA(15)
- Apache(15)
- Mybatis(14)
- Oracle(14)
- jdk(14)
- Tomcat(14)
- Linux(14)
- HTTP(14)
- XML(13)
- JdbcTemplate(13)
- OAuth(13)
- Nacos(13)
- Pro(13)
- Data(12)
- JSON(12)
- OAuth2(12)
- stream(11)
- int(11)
- Myeclipse(11)
- not(10)
- Bug(10)
- maven(9)
- Map(9)
- Hystrix(9)
- ast(9)
- APP(8)
- Bit(8)
- API(8)
- session(8)
- Window(8)
- Swagger(8)
- Github(7)
- JavaMail(7)
- Cache(7)
- File(7)
- mail(7)
- IntelliJ(7)
- windows(7)
- too(7)
- HTML(7)
- RabbitMQ(6)
- star(6)
- and(6)
- Excel(6)
- Log4J(6)
- pushlet(6)
- apt(6)
- read(6)
- Freemarker(6)
- WebFlux(6)
- JSP(6)
- Bean(6)
- error(6)
- nginx(6)
- Server(6)
- ueditor(6)
- jar(6)
- ehcache(6)
- UDP(6)
- rdquo(5)
- PHP(5)
- Struts(5)
- string(5)
- Syntaxhighlighter(5)
- script(5)
- Tool(5)
- Controller(5)
- swagger2(5)
- ldquo(5)
- input(5)
- Servlet(5)