Java根据IP获取用户登录地址
1.通过请求淘宝接口获取
注:http://ip.taobao.com/service/getIpInfo.php?ip="+ip
早已失效
最新地址:http://ip.taobao.com/outGetIpInfo
@Slf4j
public class IPUtils {
public static final String HOST = "http://ip.taobao.com";
public static final String PATH = "/outGetIpInfo";
/**
* @Description: 根据请求taobao接口获取IP真实地址
* @param ip IP地址
* @return: String 真实地址
*/
public static String getRealAddressByIP(String ip) {
String address = "";
Map<String,String> params = new HashMap<>();
params.put("ip",ip);
params.put("accessKey","alibaba-inc");
Map<String, String> headers = new HashMap<String, String>();//无
Map<String, String> bodys = new HashMap<String, String>();//无
try{
//自行百度HTTP form请求 不贴了
HttpResponse response = HttpUtils.doPost(HOST,PATH,"POST",headers,params,bodys);
JSONObject ret = JSON.parseObject(EntityUtils.toString(response.getEntity()));
JSONObject data = ret.getObject("data", JSONObject.class);
String country = "";
if(Objects.nonNull(data.getString("country"))) country = data.getString("country");
String region = "";
if(Objects.nonNull(data.getString("region"))) region = data.getString("region");
String city = "";
if(Objects.nonNull(data.getString("city"))) city = data.getString("city");
String isp = "";
if(Objects.nonNull(data.getString("isp"))) isp = data.getString("isp");
address = country + region + city + " " + isp;
}catch (Exception e){
log.error("get ipaddr error{}",e.getMessage());
}
return address;
}
}
2.通过本地IP库获取
可参考若依开源: https://gitee.com/y_project/RuoYi-Vue.git
下载 ip2region.db文件,以及其中的Util,长眼即用