Android 工作记录 之 获取公网IP

168 阅读1分钟
private val platforms = arrayOf(  
"https://icanhazip.com/",  
"https://ipecho.net/plain",  
"https://ipinfo.io/ip",  
)  
  
private fun getIpCn() {  
    OkGo.get<String>("https://ip.cn/api/index?ip=&type=0").execute(object:StringCallback(){  
         override fun onSuccess(response: Response<String>?) {  
              val ipCn = GsonUtils.fromJson(response?.body(), IpCn::class.java)  
              binding.userOutIpTv.text = "${ipCn.address} ${ipCn.ip}"  
         }  
  
        override fun onError(response: Response<String>?) {  
            getIpInfo()  
        }  
  
    })  
}  
var mIndex = 0  
fun getIpInfo(index:Int = 0) {  
    if(index >= platforms.size){  
        return  
    }  
    val url = platforms[index]  
    OkGo.get<String>(url).execute(object:StringCallback(){  
        override fun onSuccess(response: Response<String>?) {  
            TmdLogger.e("index $index $url ----> ${response?.body()}")  
            binding.userOutIpTv.text = "${response?.body()}"  
        }  
  
        override fun onError(response: Response<String>?) {  
            getIpInfo(++mIndex)  
        }  
    })  
}