Android Studio Retrofit продолжает давать сбой, мое приложение не может установить соединениеAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Android Studio Retrofit продолжает давать сбой, мое приложение не может установить соединение

Сообщение Anonymous »

См. ниже отчет 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»