En esta ocasión quiero compartir con uds, cómo consumir los servicios web del SRI (Sistema de Rentas Internas) del Ecuador, de una manera simple, y sin utilizar las referencias de servicios conectados que estan disponibles en Visual Studio, de esta manera hacer un poco más fácil el consumo de los mismos.
Requisitos de ejecución del código:
El siguiente codigo esta desarrollado en la version .NET 7, aunque puede funcionar con versiones anteriores, no han existidos cambios significativos en el nucleo o las librerias que se usan para el desarrollo del mismo.
El IDE de desarrollo usado es Visual Studio 2022.
Descripción de la solución realizada:
El código a continuación se realizo usando el template de projecto XUnit Test en visual studio 2022, por lo que para su ejecución es necesario ejecutar los test y comprobar los resultados de los mismos.
En general la implementacion se realizó utilizando la clase HttpClient que implementa .NET, y para la serialización y deserialización de XML se utilizó la clases XmlSerializer así mismo implementada por .NET, por lo que para esta solucion no se utiliza librerias externas o de terceros.
Código
Lo primero que debemos es crear una clase que implemente los métodos que vamos a consumir de los web services, en este caso los servicios web del sri de Recepcion y Autorizacion son servicios web SOAP y ambos utilizan el método POST, por lo que la implementacion que necesitamos es una solicitud post. A continuación se muestra la clase creada para éste propósito:
A continuación vamos a crear los test necesarios para realizar el consumo, obtener la respuesta y realizar la deserializacion de la misma, para poder utilizarla de la manera que sea conveniente:
En el código anterior vemos como se hace el llamado al cliente http y a su vez al metodo PostRequest, que es el que realiza el consumo del servicio web.
Las clases ReceptionEnvelop, y AuthorizationEnvelop son clases con anotaciones XML que se usan para la deserialización, se encuentran disponibles en el repositorio de GitHub que les dejo a continuación, por si quieren descargar el projecto y ejecutarlo de una manera más fácil.
Como se muestra a continuación los test funcionaron correctamente y se obtuvo las respuestas esperadas desde los servicios web de prueba del SRI:
Espero les sirva y puedan utilizarlo en sus proyectos. Saludos!