一.申請(qǐng)百度地圖的ak
1.首先我們需要進(jìn)入地圖開放平臺(tái)的官網(wǎng),根據(jù)提示注冊(cè)賬號(hào),以百度地圖為例:
https://lbsyun.baidu.com/
我們新用戶登錄之后會(huì)彈出這個(gè)頁(yè)面,選擇個(gè)人愛好者進(jìn)入完成注冊(cè)
成功之后我們會(huì)進(jìn)入到下面這個(gè)頁(yè)面,如果沒有申請(qǐng)ak的小伙伴在控制臺(tái)看板這一塊是有一個(gè)流程指引的提示,咱們按照流程指引提示進(jìn)行就ok了,申請(qǐng)過程中會(huì)有一個(gè)50字左右的理由需要填寫,就寫個(gè)人興趣愛好開發(fā)等等之類的,很容易通過哦
2.申請(qǐng)ak,我這里是已經(jīng)申請(qǐng)好的一個(gè),沒有申請(qǐng)的小伙伴點(diǎn)擊創(chuàng)建應(yīng)用,進(jìn)去之后根據(jù)自己的需求選擇客戶端,我這里選擇的是服務(wù)端
?剛上手學(xué)習(xí)的小伙伴此處可以放行所有ip白名單,或者你獲取一下自己的上網(wǎng)ip配置在這里面
?3.創(chuàng)建好ak之后如何進(jìn)行ip定位,可以參考普通ip定位文檔,一般來說獲取網(wǎng)絡(luò)ip需要你們將程序部署到服務(wù)器上面去,我們這里直接本地測(cè)試,測(cè)試ip:27.17.99.0
https://api.map.baidu.com/location/ip?ak=您的AK&ip=您的IP&coor=bd09ll //GET請(qǐng)求
二.Java部分
這是一個(gè)GET請(qǐng)求,我們第一步需要?jiǎng)?chuàng)建這個(gè)鏈接
//region 創(chuàng)建鏈接
/**
* 讀取
*
* @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();
}
/**
* 創(chuàng)建鏈接
*
* @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 "內(nèi)網(wǎng)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);
}
我們?cè)跍y(cè)試方法里面直接調(diào)用getAdd,將測(cè)試ip傳入你就能獲取當(dāng)當(dāng)前ip的地址了,當(dāng)然咱們也可以有apifox直接發(fā)送GET請(qǐng)求
文章來源:http://www.zghlxwxcb.cn/news/detail-715386.html
?這里面返回的adcode還可以查詢天氣等信息哦文章來源地址http://www.zghlxwxcb.cn/news/detail-715386.html
到了這里,關(guān)于(Java版)根據(jù)ip獲取地理位置以及相關(guān)信息的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!