public static IPInfo getIpInfo(String ip) {
String jsonContent = null;
IPInfo ipInfo = new IPInfo();
try {
//jsonContent = getJsonContent("http://ip.taobao.com/service/getIpInfo.php?ip=" + ip); 此接口已失效
jsonContent = getJsonContent("https://ipw.cn/api/ip/query?ip=" + ip);
// 获取到数据则继续解析
JSONObject jsonObject = JSONObject.parseObject(jsonContent);
Boolean b = jsonObject.getBoolean("result");
if(b){
JSONObject address = jsonObject.getJSONObject("Address");
ipInfo.setCountry(address.getString("Country"));
ipInfo.setIp(jsonObject.getString("IP"));
ipInfo.setIsp(jsonObject.getString("ISP"));
ipInfo.setCity(address.getString("City"));
ipInfo.setRegion(address.getString("Province"));
}else{
ipInfo = getIpInfo();
}
} catch (Exception e) {
e.printStackTrace();
return getIpInfo();
}
return ipInfo;
// if (Objects.nonNull(jsonObject) && Objects.equals(jsonObject.getString("result"), true)) {
// JSONObject data = jsonObject.getJSONObject("data");
// IPInfo ipInfo = JSONObject.toJavaObject(data, IPInfo.class);
//
// }
}
IPInfo.java
@Data
public class IPInfo {
@JSONField(name = "ip")
private String ip;
@JSONField(name = "country")
private String country;
@JSONField(name = "area")
private String area;
@JSONField(name = "region")
private String region;
@JSONField(name = "city")
private String city;
@JSONField(name = "county")
private String county;
@JSONField(name = "isp")
private String isp;
@JSONField(name = "country_id")
private String countryId;
@JSONField(name = "area_id")
private String areaId;
@JSONField(name = "region_id")
private String regionId;
@JSONField(name = "city_id")
private String cityId;
@JSONField(name = "county_id")
private String countyId;
@JSONField(name = "isp_id")
private String ispId;
}