![Cómo solucionar el error “The authentication or decryption has failed” en una petición web con HttpWebRequest](https://professor-falken.com/wp-content/uploads/2017/06/Como-solucionar-el-error-The-authentication-or-decryption-has-failed-en-una-peticion-web-con-HttpWebRequest-professor-falken.com_.jpg)
Cuando quieres realizar una petición web mediante HTTP desde una aplicación móvil, desarrollando en Xamarin Android, o Visual Studio, mediante el lenguaje C#, puedes hacerlo a través del objeto System.Net.HttpWebRequest. Así, puedes realizar una solicitud de información o datos a alguna URL para luego usar los mismos en la aplicación.
Para ello, el código a usar es algo parecido a lo siguiente, sin tener en cuenta ningún manejo de excepciones en el mismo:
1 2 | System.Net.HttpWebRequest req = System.Net.WebRequest.CreateHttp(url); System.Net.HttpWebResponse res = (System.Net.HttpWebResponse)req.GetResponse(); |
Pues bien, esto que a simple vista puede resultar obvio y no dar ningún tipo de problemas, puede volverse un fastidio si la petición se realiza a una URL segura, es decir, a una dirección HTTPS.
Por algún motivo, al intentar obtener respuesta de la misma el sistema arroja un error, debido a un problema en la obtención del certificado, del tipo:
1 2 3 | Exception in Class: WebClient with message Error getting response stream (Write: The authentication or decryption has failed.): SendFailure Stack Trace: at System.Net.HttpWebRequest.EndGetResponse (IAsyncResult asyncResult) [0x00000] in :0 at System.Net.HttpWebRequest.GetResponse () [0x00000] in :0 at ... |
Para solucionar este inconveniente y que no se reporte error alguno, hay que realizar un cambio en las opciones del proyecto en cuestión. Vamos a verlo:
Paso 1. Haz click con el botón derecho, en la ventana del IDE de Xamarin o Visual Studio, sobre tu proyecto Android, y selecciona Opciones.
Paso 2. Se abrirá la ventana de opciones del proyecto con multitud de posibles configuraciones. En la parte izquierda, selecciona Compilación > Android Build. Posteriormente, en la parte derecha, casi abajo del todo, verás un selector llamado Implementación de SSL/TLS que, por defecto, suele tener el valor Predeterminado. Selecciona la opción Native TLS 1.2+ y guarda los cambios pulsando sobre el botón Aceptar.
Una vez hecho esto, prueba a compilar de nuevo la solución y a ejecutar el proyecto. Esta vez el error del que estamos hablando no aparecerá y la petición a la URL en cuestión se realizará correctamente.
Nota. Ten en cuenta que este error suele darse cuando la aplicación está en producción, es decir, en modo Release, y no suele darse cuando la tenemos en modo desarrollo o depuración, Debug.
![](https://analytics.padwani.com/images/banner2.jpg)