一.申请百度地图的ak
1.首先我们需要进入地图开放平台的官网,根据提示注册账号,以百度地图为例:
https://lbsyun.baidu.com/
我们新用户登录之后会弹出这个页面,选择个人爱好者进入完成注册
成功之后我们会进入到下面这个页面,如果没有申请ak的小伙伴在控制台看板这一块是有一个流程指引的提示,咱们按照流程指引提示进行就ok了,申请过程中会有一个50字左右的理由需要填写,就写个人兴趣爱好开发等等之类的,很容易通过哦
2.申请ak,我这里是已经申请好的一个,没有申请的小伙伴点击创建应用,进去之后根据自己的需求选择客户端,我这里选择的是服务端
刚上手学习的小伙伴此处可以放行所有ip白名单,或者你获取一下自己的上网ip配置在这里面
3.创建好ak之后如何进行ip定位,可以参考普通ip定位文档,一般来说获取网络ip需要你们将程序部署到服务器上面去,我们这里直接本地测试,测试ip:27.17.99.0
https://api.map.baidu.com/location/ip?ak=您的AK&ip=您的IP&coor=bd09ll //GET请求
二.Java部分
这是一个GET请求,我们第一步需要创建这个链接
//region 创建链接
/**
* 读取
*
* @param rd
* @return
* @throws IOException
*/
private static String readAll(Reader rd) throws IOException {
StringBuilder sb = new StringBuilder();
int cp;
while ((cp = rd.read()) != -1) {
sb.append((char) cp);
}
return sb.toString();
}
/**
* 创建链接
*
* @param url
* @return
*/
private static JSONObject readJsonFromUrl(String url) throws IOException, JSONException {
InputStream is = new URL(url).openStream();
try {
BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8")));
String jsonText = readAll(rd);
JSONObject json = JSONObject.parseObject(jsonText);
return json;
} finally {
is.close();
}
}
//endregion
//region 获取定位
/**
* 获取定位
*
* @param ip
* @return
*/
public static Object getAddressJson(String ip) {
String url = "https://api.map.baidu.com/location/ip?ip=" + ip + "&ak=" + baiDuMapAK + "&coor=bd09ll";
JSONObject jsonObject = null;
try {
jsonObject = readJsonFromUrl(url);
} catch (IOException e) {
e.printStackTrace();
}
return jsonObject.get("content");
}
/**
* 获取地址
*
* @param ip
* @return
*/
public static String getAdd(String ip){
//此处localhost是我定义的127.0.0.1
if (ip.equals(localhost)) {
return "内网IP";
}
String address = JsonHelper.getJsonValue(DataConvert.toString(getAddressJson(ip)), "address");
return address;
}
//endregion
JSON工具方法,熟悉JSON的也可以使用别的
/**
* 正常JSON格式
*
* @param jsonStr JSON字符串
* @param key key
* @return
*/
public static String getJsonValue(String jsonStr, String key) {
JSONObject jsonObject = JSON.parseObject(jsonStr);
return jsonObject.getString(key);
}
我们在测试方法里面直接调用getAdd,将测试ip传入你就能获取当当前ip的地址了,当然咱们也可以有apifox直接发送GET请求
文章来源:https://www.toymoban.com/news/detail-715386.html
这里面返回的adcode还可以查询天气等信息哦文章来源地址https://www.toymoban.com/news/detail-715386.html
到了这里,关于(Java版)根据ip获取地理位置以及相关信息的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!