Android獲取公網IP地址

Android想要獲取公網IP地址,連接wifi的情況下在應用層開發的角度使用系統的API是做不到的,只能直接或間接利用第三方的接口服務:
1、公共接口:

搜狐:

http://pv.sohu.com/cityjson

返回格式:

var returnCitySN = {"cip": "XXXX", "cid": "XXX", "cname": "XX省XX市"};

淘寶(不穩定,經常訪問不了):

http://ip.taobao.com/service/getIpInfo2.php?ip=myip

注意:淘寶的接口在請求時需要添加 “User-Agent” : “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.162 Safari/537.36 Edg/80.0.361.109”,因爲淘寶的這個接口只能用於PC瀏覽器訪問,所以需要添加該標識讓服務器認爲這個請求是PC瀏覽器發起的。

返回格式:

{"code":0,"data":{"ip":"XXXXXX","country":"中國","area":"","region":"XX","city":"XX","county":"XX","isp":"XX","country_id":"CN","area_id":"","region_id":"XXX","city_id":"XXX","county_id":"xx","isp_id":"XXX"}}

在APP中調用接口,然後手動解析出IP地址,另外這兩個接口都是http請求,在高版本系統上會出現請求失敗,是因爲從Android 9.0開始默認禁止了http請求,可以通過清單文件添加配置解決:
在這裏插入圖片描述
文件名隨便起,文件內配置如下:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true" />
</network-security-config>

優點:無需接入門檻即可使用。
缺點:不穩定,接口不可用或者有改動,會發生異常。

2、各個地圖服務API,比如:騰訊位置服務、百度地圖、高德地圖等等,需要到各平臺註冊成爲開發者後才能使用API,並且還可能存在調用次數的限制。

所以建議採用多種策略進行獲取。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章