См. ниже отчет logcat. Я пытаюсь создать удаленный API, я использую локальный сервер на своем ПК с Windows, но я просто не могу установить соединение между приложением и удаленным сервером, приложение работает нормально, отображая процент заряда батареи, но он просто передает информацию на мой сервер, любые предложения будут очень приветствоваться
2025-01-07 09:21:45.208 1971-1971 .batterymonitor com.example.batterymonitor W Accessing hidden method Ldalvik/system/CloseGuard;->get()Ldalvik/system/CloseGuard; (unsupported,core-platform-api, reflection, allowed)
2025-01-07 09:21:45.208 1971-1971 .batterymonitor com.example.batterymonitor W Accessing hidden method Ldalvik/system/CloseGuard;->open(Ljava/lang/String;)V (unsupported,core-platform-api, reflection, allowed)
2025-01-07 09:21:45.208 1971-1971 .batterymonitor com.example.batterymonitor W Accessing hidden method Ldalvik/system/CloseGuard;->warnIfOpen()V (unsupported,core-platform-api, reflection, allowed)
--------- beginning of crash
2025-01-07 09:21:45.210 1971-1971 AndroidRuntime com.example.batterymonitor D Shutting down VM
2025-01-07 09:21:45.222 1971-1971 AndroidRuntime com.example.batterymonitor E FATAL EXCEPTION: main
Process: com.example.batterymonitor, PID: 1971
java.lang.ExceptionInInitializerError
at com.example.bms.MainActivity.sendBatteryDataToServer(MainActivity.kt:93)
at com.example.bms.MainActivity.access$sendBatteryDataToServer(MainActivity.kt:28)
at com.example.bms.MainActivity$batteryStatusReceiver$1.onReceive(MainActivity.kt:60)
at android.app.LoadedApk$ReceiverDispatcher$Args.lambda$getRunnable$0(LoadedApk.java:1814)
at android.app.LoadedApk$ReceiverDispatcher$Args.$r8$lambda$mcNAAl1SQ4MyJPyDg8TJ2x2h0Rk(Unknown Source:0)
at android.app.LoadedApk$ReceiverDispatcher$Args$$ExternalSyntheticLambda0.run(D8$$SyntheticClass:0)
at android.os.Handler.handleCallback(Handler.java:959)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loopOnce(Looper.java:232)
at android.os.Looper.loop(Looper.java:317)
at android.app.ActivityThread.main(ActivityThread.java:8705)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:580)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:886)
Caused by: java.lang.NullPointerException: Attempt to get length of null array
at okhttp3.internal.tls.BasicTrustRootIndex.(BasicTrustRootIndex.java:32)
at okhttp3.internal.platform.Platform.buildTrustRootIndex(Platform.java:303)
at okhttp3.internal.platform.AndroidPlatform.buildTrustRootIndex(AndroidPlatform.java:256)
at okhttp3.internal.platform.Platform.buildCertificateChainCleaner(Platform.java:173)
at okhttp3.internal.platform.AndroidPlatform.buildCertificateChainCleaner(AndroidPlatform.java:212)
at okhttp3.internal.tls.CertificateChainCleaner.get(CertificateChainCleaner.java:41)
at okhttp3.OkHttpClient$Builder.sslSocketFactory(OkHttpClient.java:782)
at com.example.bms.network.RetrofitInstance.(RetrofitInstance.kt:38)
at com.example.bms.MainActivity.sendBatteryDataToServer(MainActivity.kt:93)
at com.example.bms.MainActivity.access$sendBatteryDataToServer(MainActivity.kt:28)
at com.example.bms.MainActivity$batteryStatusReceiver$1.onReceive(MainActivity.kt:60)
at android.app.LoadedApk$ReceiverDispatcher$Args.lambda$getRunnable$0(LoadedApk.java:1814)
at android.app.LoadedApk$ReceiverDispatcher$Args.$r8$lambda$mcNAAl1SQ4MyJPyDg8TJ2x2h0Rk(Unknown Source:0)
at android.app.LoadedApk$ReceiverDispatcher$Args$$ExternalSyntheticLambda0.run(D8$$SyntheticClass:0)
at android.os.Handler.handleCallback(Handler.java:959)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loopOnce(Looper.java:232)
at android.os.Looper.loop(Looper.java:317)
at android.app.ActivityThread.main(ActivityThread.java:8705)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:580)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:886)
2025-01-07 09:21:45.286 1971-1971 Process com.example.batterymonitor I Sending signal. PID: 1971 SIG: 9
см. ниже файл модернизации
package com.example.bms.network
import okhttp3.OkHttpClient
import retrofit2.Call
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory
import retrofit2.http.Body
import retrofit2.http.POST
import java.security.cert.X509Certificate
import javax.net.ssl.SSLContext
import javax.net.ssl.SSLSocketFactory
import javax.net.ssl.X509TrustManager
// Insecure SSL configurations for Retrofit
fun getInsecureTrustManager(): X509TrustManager {
return object : X509TrustManager {
override fun checkClientTrusted(chain: Array?, authType: String?) {}
override fun checkServerTrusted(chain: Array?, authType: String?) {}
override fun getAcceptedIssuers(): Array? = null
}
}
fun getInsecureSocketFactory(): SSLSocketFactory {
val context = SSLContext.getInstance("TLS")
context.init(null, arrayOf(getInsecureTrustManager()), java.security.SecureRandom())
return context.socketFactory
}
// Retrofit instance setup
object RetrofitInstance {
// Base URL for your API
private const val BASE_URL = "http://192.168.1.134:3000/battery/status" // Replace with your actual API URL
// Create OkHttpClient for additional configurations (e.g., logging, timeouts)
private val client = OkHttpClient.Builder()
.sslSocketFactory(getInsecureSocketFactory(), getInsecureTrustManager())
.hostnameVerifier { _, _ -> true } // Accept all hostnames (only for development)
.build()
// Create Retrofit instance
private val retrofit = Retrofit.Builder()
.baseUrl(BASE_URL) // Set the base URL for your API
.addConverterFactory(GsonConverterFactory.create()) // Add Gson converter to convert JSON
.client(client) // Use the OkHttp client
.build()
// Provide the API service
val batteryApiService: BatteryApiService by lazy {
retrofit.create(BatteryApiService::class.java)
}
}
// Retrofit service interface to define API methods
interface BatteryApiService {
// Define your POST request to send battery data
@POST("battery/status")
fun sendBatteryStatus(@Body batteryData: BatteryData): Call
}
// Data class to hold battery data
data class BatteryData(
val batteryPercentage: String,
val batteryStatus: String
)
Подробнее здесь: https://stackoverflow.com/questions/793 ... connection
Android Studio Retrofit продолжает давать сбой, мое приложение не может установить соединение ⇐ Android
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение