java 如何讓利用ip 實現登入日誌功能
阿新 • • 發佈:2018-11-22
1.匯入如下pom
org.nutz.http.Http;
org.nutz.http.Response;
iorg.nutz.json.Json;
<!--呼叫淘寶介面API的依賴--> <dependency> <groupId>org.nutz</groupId> <artifactId>nutz</artifactId> <version>1.r.55</version> </dependency>
2.新建實體類
package com.example.springboot.shiro.common.utils.ip; /** * Created by joe強 on 2018/8/31 2:06 */ public class TaobaoIPResult { private int code; private String country; private String area; private String region; private String city; private String county; private String isp; private String ip; public TaobaoIPResult() { } public int getCode() { return this.code; } public void setCode(int code) { this.code = code; } public String getCountry() { return this.country; } public void setCountry(String country) { this.country = country; } public String getArea() { return this.area; } public void setArea(String area) { this.area = area; } public String getRegion() { return this.region; } public void setRegion(String region) { this.region = region; } public String getCity() { return this.city; } public void setCity(String city) { this.city = city; } public String getCounty() { return this.county; } public void setCounty(String county) { this.county = county; } public String getIsp() { return this.isp; } public void setIsp(String isp) { this.isp = isp; } public String getIp() { return this.ip; } public void setIp(String ip) { this.ip = ip; } }
3.呼叫第三方介面,網上有很多這裡是 淘寶的介面
package com.example.springboot.shiro.common.utils.ip; import org.nutz.http.Http; import org.nutz.http.Response; import org.nutz.json.Json; import java.util.Map; /** * Created by joe強 on 2018/8/31 2:07 */ public class TaobaoIP { public TaobaoIP() { } public static TaobaoIPResult getResult(String ip) { Response response = Http.get("http://ip.taobao.com/service/getIpInfo.php?ip=" + ip); TaobaoIPResult result = new TaobaoIPResult(); if (ip != null && response.getStatus() == 200) { try { String content = response.getContent(); Map<String, Object> contentMap = (Map) Json.fromJson(content); if (((Integer)((Integer)contentMap.get("code"))).intValue() == 0) { Map<String, Object> dataMap = (Map)contentMap.get("data"); result.setCountry((String)dataMap.get("country")); result.setRegion((String)dataMap.get("region")); result.setCity((String)dataMap.get("city")); result.setCounty((String)dataMap.get("county")); result.setIsp((String)dataMap.get("isp")); result.setArea((String)dataMap.get("area")); result.setIp((String)dataMap.get("ip")); result.setCode(0); return result; } } catch (Exception var6) { ; } } result.setCode(-1); result.setCountry("XX"); result.setRegion("XX"); result.setCity("XX"); result.setCounty("XX"); result.setIsp("XX"); result.setArea("XX"); result.setIp(ip); return result; } }
4.網上有很多方法,原理都差不多,但是有的會請求超時,這個方法暫且沒有這種情況,如有請檢查URL是否寫的正確!