diff --git a/app/src/main/java/com/m57/hermescontrol/data/ws/HermesWsClient.kt b/app/src/main/java/com/m57/hermescontrol/data/ws/HermesWsClient.kt index bad4c3e2..1f39d56f 100644 --- a/app/src/main/java/com/m57/hermescontrol/data/ws/HermesWsClient.kt +++ b/app/src/main/java/com/m57/hermescontrol/data/ws/HermesWsClient.kt @@ -25,7 +25,7 @@ import kotlinx.coroutines.launch import okhttp3.CertificatePinner import okhttp3.OkHttpClient import okhttp3.Request -import okhttp3.RequestBody +import okhttp3.RequestBody.Companion.toRequestBody import okhttp3.Response import okhttp3.WebSocket import okhttp3.WebSocketListener @@ -166,7 +166,7 @@ object HermesWsClient { Request.Builder() .url("http://${AuthManager.getHost()}:${AuthManager.getPort()}/api/auth/ws-ticket") .header("Cookie", "hermes_session_at=$sessionCookie") - .post(RequestBody.create(null, "{}")) + .post("{}".toRequestBody()) .build() val response = client.newCall(request).execute() if (response.isSuccessful) { diff --git a/app/src/main/java/com/m57/hermescontrol/ui/authlogin/AuthLoginViewModel.kt b/app/src/main/java/com/m57/hermescontrol/ui/authlogin/AuthLoginViewModel.kt index da338816..c24106c9 100644 --- a/app/src/main/java/com/m57/hermescontrol/ui/authlogin/AuthLoginViewModel.kt +++ b/app/src/main/java/com/m57/hermescontrol/ui/authlogin/AuthLoginViewModel.kt @@ -18,7 +18,7 @@ import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import okhttp3.OkHttpClient import okhttp3.Request -import okhttp3.RequestBody +import okhttp3.RequestBody.Companion.toRequestBody import java.util.concurrent.TimeUnit /** @@ -341,7 +341,7 @@ class AuthLoginViewModel(private val app: Application) : ViewModel() { Request.Builder() .url("$baseUrl/auth/password-login") .header("Content-Type", "application/json") - .post(RequestBody.create(null, jsonBody)) + .post(jsonBody.toRequestBody()) .build() val loginResp = loginClient.newCall(loginReq).execute() @@ -389,7 +389,7 @@ class AuthLoginViewModel(private val app: Application) : ViewModel() { Request.Builder() .url("$baseUrl/api/auth/ws-ticket") .header("Cookie", cookieHeader) - .post(RequestBody.create(null, "{}")) + .post("{}".toRequestBody()) .build() val ticketResp = ticketClient.newCall(ticketReq).execute() diff --git a/app/src/test/java/com/m57/hermescontrol/data/ws/HermesWsClientTest.kt b/app/src/test/java/com/m57/hermescontrol/data/ws/HermesWsClientTest.kt index 0e4e8c86..531004a5 100644 --- a/app/src/test/java/com/m57/hermescontrol/data/ws/HermesWsClientTest.kt +++ b/app/src/test/java/com/m57/hermescontrol/data/ws/HermesWsClientTest.kt @@ -60,10 +60,11 @@ class HermesWsClientTest { fun tearDown() { HermesWsClient.disconnect() // Wait a bit to allow internal OkHttp coroutines to clean up before shutting down MockWebServer - Thread.sleep(100) + // Increased from 100ms for OkHttp 5.x — needs more time for the WS close handshake + Thread.sleep(500) try { mockWebServer.shutdown() - } catch (e: Exception) { + } catch (e: Throwable) { e.printStackTrace() } unmockkAll() diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index a813680c..c3eb2283 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -19,7 +19,7 @@ ksp = "2.3.9" nav3Core = "1.0.1" lifecycleViewmodelNav3 = "2.10.0" leakcanary = "2.14" -okhttp = "4.12.0" +okhttp = "5.4.0" retrofit = "2.11.0" gson = "2.14.0" securityCrypto = "1.0.0"