通过IP获取准确地址,精确到县/区
原创
©著作权归作者所有:来自51CTO博客作者道祖且长的原创作品,请联系作者获取转载授权,否则将追究法律责任
1、传入HttpServletRequest
2、通过HttpServletRequest获取IP
public static String getIpAddress(HttpServletRequest request) {
if (request.getHeader("x-forwarded-for") == null) {
return request.getRemoteAddr();
}
return request.getHeader("x-forwarded-for");
}
3、通过IP获取具体位置
/**
* 获取ip对应地址地址(比百度地图精准,还不用ak之类的秘钥)
* @param ip ip
* @return
*/
public static String getAddressPlus(String ip){
if(ip.contains("127.0.0.1") || ip.contains("0:0:0:0:0:0:0:1")){
return "本地";
}
//更精确的地图API
String url = "https://sp1.baidu.com/8aQDcjqpAAV3otqbppnN2DJv/api.php?query="+ ip +"&resource_id=5809";
String body = postToBaidu(ip,url);
JSONObject jsonObject = JSON.parseObject(body);
JSONArray data1 = jsonObject.getJSONArray("data");
JSONObject o = (JSONObject)data1.get(0);
return o.getString("location");
}
4、具体效果
–我是“三七有脾气”,一个在互联网"苟且偷生"的Java程序员