From dab2f54542d151c92dcba04bd9833280e9728e2d Mon Sep 17 00:00:00 2001
From: 18034727885 <973609879@qq.com>
Date: 星期二, 18 八月 2026 13:57:55 +0800
Subject: [PATCH] 修复问题

---
 app/src/main/java/com/driver/igotrip/base/gaode/AMapKit.kt |   39 ++++++++++++++++++++++++++-------------
 1 files changed, 26 insertions(+), 13 deletions(-)

diff --git a/app/src/main/java/com/driver/igotrip/base/gaode/AMapKit.kt b/app/src/main/java/com/driver/igotrip/base/gaode/AMapKit.kt
index fc39134..a778e31 100644
--- a/app/src/main/java/com/driver/igotrip/base/gaode/AMapKit.kt
+++ b/app/src/main/java/com/driver/igotrip/base/gaode/AMapKit.kt
@@ -18,6 +18,7 @@
 import android.util.Log
 import android.view.View
 import androidx.core.content.ContextCompat
+import cn.sinata.rxnetty.LogHelper
 import cn.sinata.xldutils.utils.SPUtils
 import com.driver.igotrip.R
 import com.driver.igotrip.base.Const
@@ -44,6 +45,9 @@
 import com.google.android.gms.maps.model.PolylineOptions
 import com.google.gson.Gson
 import com.tbruyelle.rxpermissions2.RxPermissions
+import io.reactivex.Observable
+import io.reactivex.android.schedulers.AndroidSchedulers
+import io.reactivex.schedulers.Schedulers
 import okhttp3.MediaType.Companion.toMediaTypeOrNull
 import okhttp3.OkHttpClient
 import okhttp3.Request
@@ -439,25 +443,34 @@
         return false
     }
 
-    fun getClient(url: String, function: (String) -> Unit) {
+    fun getClient(url: String, retryCount: Int = 3, function: (String) -> Unit) {
         val client = OkHttpClient().newBuilder().build()
-        val mediaType = "text/plain".toMediaTypeOrNull()
-        val body = RequestBody.create(mediaType, "")
         val request: Request = Request.Builder()
             .url(url)
             .method("GET", null)
             .build()
-        Thread {
-            try {
-                val response = client.newCall(request).execute()
-                Handler(Looper.getMainLooper()).post {
-                    function(response.body?.string() ?: "")
+        LogHelper.logRecord("请求谷歌服务器 $url")
+        val subscribe = Observable.just(request)
+            .map { request -> client.newCall(request).execute().body?.string() ?: "" }
+            .retry(retryCount.toLong())   // 最多额外重试 3 次(加上首次共 4 次尝试)
+            .subscribeOn(Schedulers.io())
+            .observeOn(AndroidSchedulers.mainThread())
+            .subscribe({
+                try {
+                    if (it.isEmpty()) {
+                        LogHelper.logRecord("请求谷歌服务器成功 获取结果异常为空")
+                        return@subscribe
+                    }
+                    function(it)
+                    LogHelper.logRecord("请求谷歌服务器成功")
+                } catch (e: Exception) {
+                    e.printStackTrace()
+                    LogHelper.logRecord("请求谷歌服务器成功,获取结果异常报错 message:${e.message},stackTrace:${e.stackTraceToString()}")
                 }
-            } catch (e: Exception) {
-                e.printStackTrace()
-            }
-        }.start()
-
+            }, { throwable ->
+                throwable.printStackTrace()
+                LogHelper.logRecord("请求谷歌服务器异常报错 message:${throwable.message},stackTrace:${throwable.stackTraceToString()}")
+            })
     }
 
     /***

--
Gitblit v1.7.1