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 = HttpClientUtils.get(url);
JSONObject jsonObject = JSON.parseObject(body);
JSONArray data1 = jsonObject.getJSONArray("data");
JSONObject o = (JSONObject)data1.get(0);
return o.getString("location");
}
4、具体效果
2023年2月15日更新:
确实部分ip只能获取到市,但是大部分还是能够获取到县/区的,这取决于ip,而不是api的问题
文章来源:https://www.toymoban.com/news/detail-532862.html
–我是“三七有脾气”,一个在互联网"苟且偷生"的Java程序员
“如果感觉博客对你有用,麻烦给个点赞、评论、收藏,谢谢”文章来源地址https://www.toymoban.com/news/detail-532862.html
到了这里,关于通过IP获取准确地址,精确到县/区的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!