Inicio › Foros › Lenguajes de programación, desarrollo, código fuente › Java y Kotlin › Error CLEARTEXT communication not permitted [RESUELTO]
Etiquetado: android, android studio, api, api rest, api restful, apirest, app, cleartext, error, kotlin, móvil, policy, programación, rest, restful, resuelto, security, seguridad, solución, solucionado, solved, studio
- Este debate tiene 1 respuesta, 2 mensajes y ha sido actualizado por última vez el hace 4 semanas, 1 día por alonsojpd.
-
AutorEntradas
-
01/12/2025 a las 13:18 #51719VariosModerador
Hola, estoy intentando usar Retrofit y Gson en un proyecto Android Studio con Kotlin, parece que todo está correcto pero al compilar me aparece este error y la App no carga:
FATAL EXCEPTION: main
Process: facturacion.com.facturacionretrofit, PID: 11026
java.net.UnknownServiceException: CLEARTEXT communication to localhost not permitted by network security policy
at okhttp3.internal.connection.RealConnection.connect(RealConnection.java:164)
at okhttp3.internal.connection.ExchangeFinder.findConnection(ExchangeFinder.java:224)
at okhttp3.internal.connection.ExchangeFinder.findHealthyConnection(ExchangeFinder.java:108)
at okhttp3.internal.connection.ExchangeFinder.find(ExchangeFinder.java:88)
at okhttp3.internal.connection.Transmitter.newExchange(Transmitter.java:169)
at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:41)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:117)
at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:94)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:117)
at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142)
at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:88)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:117)
at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:229)
at okhttp3.RealCall$AsyncCall.execute(RealCall.java:172)
at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
at java.lang.Thread.run(Thread.java:1012)
Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [StandaloneCoroutine{Cancelling}@9e7b846, Dispatchers.Main.immediate]
2025-01-12 12:58:11.085 11026-11026 Process facturacion.com.facturacionretrofit I Sending signal. PID: 11026 SIG: 9¿A qué puede ser debido? ¿cómo lo resuelvo?
01/14/2025 a las 09:50 #51728alonsojpdSuperadministradorEl error que nos comentas es debido a que Android tiene una directiva de seguridad para impedir, a priori, el uso de acceso a sitios HTTP sin cifrado para consumo de APIRest. En tu caso estás intentando acceder al servidor de localhost, que no lo tienes en HTTPS.
Si estás en modo depuración y estás usando un servidor de API Restful en local, puedes desactivar esa directiva. Para ello, edita el fichero AndroidManifest.xml y añadir android:usesCleartextTraffic=»true» en «application».
Un ejemplo de fichero AndroidManifest.xml con esta directiva:
XHTML12345678910111213141516171819202122232425262728293031<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"><uses-permission android:name="android.permission.INTERNET"/><applicationandroid:usesCleartextTraffic="true"android:allowBackup="true"android:dataExtractionRules="@xml/data_extraction_rules"android:fullBackupContent="@xml/backup_rules"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/Theme.ProyectoARetrofit"tools:targetApi="31"><activityandroid:name=".MainActivity"android:exported="true"android:label="@string/app_name"android:theme="@style/Theme.ProyectoARetrofit"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>Recuerda que es importante, por seguridad, no usar nunca conexión HTTP sin cifrar con el servidor API Restful.
-
AutorEntradas
- Debes estar registrado para responder a este debate.