From d9cdc16ff95564abf2438f3a5353cf6f2bdfa68d Mon Sep 17 00:00:00 2001 From: advplyr Date: Fri, 15 Jul 2022 16:22:44 -0500 Subject: [PATCH] Fix:Catch api handler invalid json response body --- .../audiobookshelf/app/server/ApiHandler.kt | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/android/app/src/main/java/com/audiobookshelf/app/server/ApiHandler.kt b/android/app/src/main/java/com/audiobookshelf/app/server/ApiHandler.kt index 87c98b8c..722032b1 100644 --- a/android/app/src/main/java/com/audiobookshelf/app/server/ApiHandler.kt +++ b/android/app/src/main/java/com/audiobookshelf/app/server/ApiHandler.kt @@ -17,6 +17,7 @@ import com.getcapacitor.JSObject import okhttp3.* import okhttp3.MediaType.Companion.toMediaType import okhttp3.RequestBody.Companion.toRequestBody +import org.json.JSONException import org.json.JSONObject import java.io.IOException import java.util.concurrent.TimeUnit @@ -106,14 +107,21 @@ class ApiHandler(var ctx:Context) { if (bodyString == "OK") { cb(JSObject()) } else { - var jsonObj = JSObject() - if (bodyString.startsWith("[")) { - val array = JSArray(bodyString) - jsonObj.put("value", array) - } else { - jsonObj = JSObject(bodyString) + try { + var jsonObj = JSObject() + if (bodyString.startsWith("[")) { + val array = JSArray(bodyString) + jsonObj.put("value", array) + } else { + jsonObj = JSObject(bodyString) + } + cb(jsonObj) + } catch(je:JSONException) { + Log.e(tag, "Invalid JSON response ${je.localizedMessage} from body $bodyString") + val jsobj = JSObject() + jsobj.put("error", "Invalid response body") + cb(jsobj) } - cb(jsonObj) } } }