Android 从任意网址获取服务器时间

专用设备的时间异常导致上报数据时携带的时间是错误的,设备自带的网络校准服务失效,可以从任意能访问到的地址拿到一个服务器时间做对比。

            val okHttpClient = OkHttpClient.Builder()
                .connectTimeout(10, TimeUnit.SECONDS)
                .writeTimeout(10, TimeUnit.SECONDS)
                .build()
            val request = Request.Builder()
                //这里地址可以换成自己服务器的接口地址,只有能通就行。
                .url("https://www.baidu.com")
                .get()
                .build()
            try {
                okHttpClient.newCall(request).execute().use {
                    val dateHeader = it.header("Date")
                    if (!dateHeader.isNullOrEmpty()) {
                        val format = SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z", Locale.US)
                        val date = format.parse(dateHeader)
                        //这里拿到的时间就是服务器的时间。
                        if (date != null) {
                            val span = TimeUtils.getTimeSpan(date, Date(), TimeConstants.MIN)
                            LogUtils.e("时间间隔:$span")
                            if (abs(span) > 10) {
                                withContext(Dispatchers.Main) {
                                    timeErrorPopup.show()
                                }
                            }
                        }
                    }
                }
            } catch (e: Exception) {
                e.printStackTrace()
            } finally {
                //释放
                okHttpClient.connectionPool().evictAll()
            }
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容