Resumen: en este post te mostraré la solución al error de Android que dice así:
java.net.UnknownServiceException: CLEARTEXT communication to sitio.com not permitted by network security policy
Esto es debido a que estamos usando HTTP, y no HTTPS.
Como lo dije, este error de Android en Java ocurre porque estamos haciendo una petición HTTP a un host no seguro, es decir, que no utiliza HTTPS.
Por ello es que dice cleartext o texto claro, es decir, que no está encriptado como las comunicaciones por HTTPS.
En otras palabras, hacemos peticiones a un sitio como:
http://sitio.com/mi_app
En lugar de:
https://sitio.com/mi_app
Ya sea por no tener un certificado SSL o porque está mal la ruta.
La solución más simple y segura (pues así evitas ataques de Man in the middle o cosas de esas) es usar un host que tenga HTTPS (comprando uno, usando Let’s encrypt, etcétera), cambiando la URL y listo.
La desventaja de esto es que es complicado cuando se hacen pruebas locales, por ello veamos la solución 2.
En tu AndroidManifest.xml, dentro de <application>
agrega la siguiente línea:
android:usesCleartextTraffic="true"
De manera que, ahora se vea aproximadamente así:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="paquete">
<uses-permission android:name="android.permission.INTERNET" />
<application
android:usesCleartextTraffic="true"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
</application>
</manifest>
Simplemente presta atención a la línea 6, que indica que usa tráfico en texto plano o claro, sin encriptar.
Yo recomiendo la opción 2 para pruebas locales, pero también recomiendo usar un servidor HTTPS cuando lleves tu app a producción.
En este post te quiero compartir un código de C++ para listar y cancelar trabajos…
Gracias a WebAssembly podemos ejecutar código de otros lenguajes de programación desde el navegador web…
Revisando y buscando maneras de imprimir un PDF desde la línea de comandos me encontré…
Esta semana estuve recreando la API del plugin para impresoras térmicas en Android (HTTP a…
Hoy te enseñaré a extraer la cadena base64 de una clave PEM usando una función…
Encender un foco con un Bot de Telegram es posible usando una tarjeta como la…
Esta web usa cookies.
Ver comentarios
Exlente.. hacia falta tu explicación.
Buena explicación!!!