From 26ebfe132cc538e1c45259e7243cf39c5ef4f6ac Mon Sep 17 00:00:00 2001 From: yumoqing Date: Mon, 18 May 2026 09:36:13 +0800 Subject: [PATCH] fix: use java.net.URLEncoder for form encoding (removes Ktor FormDataContent dependency), simplify postForm to use Map --- .../kotlin/com/bricks/mp/core/BricksHttp.kt | 6 +++--- .../kotlin/com/bricks/mp/sage/SageClient.kt | 11 ++++++++--- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/shared/src/commonMain/kotlin/com/bricks/mp/core/BricksHttp.kt b/shared/src/commonMain/kotlin/com/bricks/mp/core/BricksHttp.kt index 527f056..9949ffe 100644 --- a/shared/src/commonMain/kotlin/com/bricks/mp/core/BricksHttp.kt +++ b/shared/src/commonMain/kotlin/com/bricks/mp/core/BricksHttp.kt @@ -79,11 +79,11 @@ class BricksHttp(private val context: BricksContext? = null) { */ suspend fun postForm( url: String, - form: Parameters, + form: Map, authToken: String = "" ): String { - val formBody = form.flattenEntries().joinToString("&") { (k, v) -> - "${encodeURLParameter(k)}=${encodeURLParameter(v)}" + val formBody = form.entries.joinToString("&") { (k, v) -> + "${java.net.URLEncoder.encode(k, "UTF-8")}=${java.net.URLEncoder.encode(v, "UTF-8")}" } val response = client.post(url) { contentType(ContentType.Application.FormUrlEncoded) diff --git a/shared/src/commonMain/kotlin/com/bricks/mp/sage/SageClient.kt b/shared/src/commonMain/kotlin/com/bricks/mp/sage/SageClient.kt index dc3938f..414883c 100644 --- a/shared/src/commonMain/kotlin/com/bricks/mp/sage/SageClient.kt +++ b/shared/src/commonMain/kotlin/com/bricks/mp/sage/SageClient.kt @@ -55,7 +55,9 @@ class SageClient { _loginError.value = null try { val url = "$baseUrl/rbac/user/userpassword_login.dspy" - val formBody = "username=${encodeURLParameter(username)}&passwd=${encodeURLParameter(password)}" + val encodedUser = java.net.URLEncoder.encode(username, "UTF-8") + val encodedPass = java.net.URLEncoder.encode(password, "UTF-8") + val formBody = "username=$encodedUser&passwd=$encodedPass" val response = client.post(url) { contentType(ContentType.Application.FormUrlEncoded) @@ -138,7 +140,7 @@ class SageClient { path: String, params: Map = emptyMap(), method: String = "GET", - formBody: String = "", + formBody: Map = emptyMap(), jsonBody: JsonObject? = null ): Result = mutex.withLock { try { @@ -155,8 +157,11 @@ class SageClient { setBody(jsonBody) } formBody.isNotEmpty() -> { + val bodyStr = formBody.entries.joinToString("&") { (k, v) -> + "${java.net.URLEncoder.encode(k, "UTF-8")}=${java.net.URLEncoder.encode(v, "UTF-8")}" + } contentType(ContentType.Application.FormUrlEncoded) - setBody(formBody) + setBody(bodyStr) } } }