Guía para generar y consumir el WSDL del servicio
Este documento describe cómo acceder al WSDL del servicio de simulación de documentos digitalizados y cómo consumirlo desde diferentes plataformas.
¿Qué es WSDL?
WSDL (Web Services Description Language) es un formato XML que describe la funcionalidad ofrecida por un servicio web SOAP. Permite a los clientes entender automáticamente cómo interactuar con el servicio.
Acceso al WSDL
Una vez que el servicio está en ejecución, el WSDL está disponible en las siguiente URL:
https://dnic.mz.uy/WsServicioDeInformacion.asmx?wsdl
Consumo del servicio SOAP
Existen múltiples formas de consumir un servicio SOAP, dependiendo de la plataforma y el lenguaje de programación.
Usando SoapUI (herramienta de pruebas)
- Descarga e instala SoapUI
- Crea un nuevo proyecto SOAP
- En la URL del WSDL, introduce la URL del servicio (ej.
https://dnic.mz.uy/WsServicioDeInformacion.asmx?wsdl
) - SoapUI generará automáticamente las solicitudes de ejemplo para cada operación
Usando Postman
- Abre Postman y crea una nueva solicitud
- Establece el método a POST
- Introduce la URL del servicio (ej.
https://dnic.mz.uy/WsServicioDeInformacion.asmx
) - En Headers, agrega
Content-Type: text/xml
- En el cuerpo, coloca tu solicitud SOAP
Ejemplos de solicitud y respuesta
Ejemplo de solicitud SOAP
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ObtDocDigitalizado xmlns="http://dnic.gub.uy/">
<param>
<NroDocumento>49746161</NroDocumento>
<TipoDocumento>DO</TipoDocumento>
<NroSerie>ABC123456</NroSerie>
<NroIdentificacion>123456</NroIdentificacion>
<Organismo>ServiPuntos</Organismo>
<ClaveAcceso1>Clave123</ClaveAcceso1>
</param>
</ObtDocDigitalizado>
</soap:Body>
</soap:Envelope>
Ejemplo de respuesta SOAP (éxito)
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<s:Body>
<ObtDocDigitalizadoResponse xmlns="http://dnic.gub.uy/">
<ObtDocDigitalizadoResult>
<Persona>
<CodTipoDocumento>DO</CodTipoDocumento>
<NroDocumento>49746161</NroDocumento>
<Nombre1>Jimena</Nombre1>
<Nombre2>Marta</Nombre2>
<PrimerApellido>Moreira</PrimerApellido>
<SegundoApellido>Morales</SegundoApellido>
<Sexo>2</Sexo>
<FechaNacimiento>1963-10-28</FechaNacimiento>
<CodNacionalidad>2</CodNacionalidad>
<NombreEnCedula>Jimena Marta Moreira Morales</NombreEnCedula>
<IdSolicitud>88726</IdSolicitud>
<IdRespuesta>77134</IdRespuesta>
</Persona>
<Imagenes>
<ImagenDigital>
<Foto>No Implementado...</Foto>
<LargoBytes>254</LargoBytes>
<TipoImagen>1</TipoImagen>
</ImagenDigital>
<ImagenDigital>
<Foto>No Implementado...</Foto>
<LargoBytes>282</LargoBytes>
<TipoImagen>2</TipoImagen>
</ImagenDigital>
</Imagenes>
</ObtDocDigitalizadoResult>
</ObtDocDigitalizadoResponse>
</s:Body>
</s:Envelope>
Ejemplo de respuesta SOAP (error)
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<s:Body>
<ObtDocDigitalizadoResponse xmlns="http://dnic.gub.uy/">
<ObtDocDigitalizadoResult>
<Errores>
<Mensaje>
<CodMensaje>1001</CodMensaje>
<Descripcion>Persona inexistente en la base de datos</Descripcion>
<DatoExtra>Trace</DatoExtra>
</Mensaje>
</Errores>
</ObtDocDigitalizadoResult>
</ObtDocDigitalizadoResponse>
</s:Body>
</s:Envelope>
Consumo del servicio desde C#
// Agregar referencia al servicio:
// dotnet add package System.ServiceModel.Http
// dotnet add package System.ServiceModel.Primitives
using System;
using System.ServiceModel;
using System.Threading.Tasks;
// Generar cliente del servicio usando:
// dotnet tool install --global dotnet-svcutil
// dotnet-svcutil https://dnic.mz.uy/WsServicioDeInformacion.asmx?wsdl
class Program
{
static async Task Main()
{
// Crear el cliente
var binding = new BasicHttpBinding();
var endpoint = new EndpointAddress("https://dnic.mz.uy/WsServicioDeInformacion.asmx");
var client = new WsServicioDeInformacionClient(binding, endpoint);
// Crear parámetros
var param = new ParamObtDocDigitalizado
{
NroDocumento = "49746161",
TipoDocumento = "DO",
NroSerie = "ABC123456",
Organismo = "ServiPuntos",
ClaveAcceso1 = "Clave123"
};
// Llamar al servicio
var result = await client.ObtDocDigitalizadoAsync(param);
// Procesar resultado
if (result.Errores != null && result.Errores.Length > 0)
{
Console.WriteLine($"Error: {result.Errores[0].Descripcion}");
}
else
{
Console.WriteLine($"Nombre: {result.Persona.Nombre1} {result.Persona.PrimerApellido}");
}
}
}
Manipular el CI para obtener diferentes resultados
Como se explicó en el README principal, los primeros dígitos de la cédula determinan el comportamiento del servicio:
Primeros dos dígitos | Resultado |
---|---|
11 | Error - Persona inexistente |
12 | Error - Límite de consultas excedido |
13 | Error - Número de cédula anulado |
14 | Advertencia - Datos de persona a regularizar |
15 | Advertencia - Documento hurtado o extraviado |
Además, los últimos dos dígitos determinan la edad de la persona. Por ejemplo:
- CI terminada en "18": Persona de 18 años
- CI terminada en "25": Persona de 25 años
- CI terminada en "65": Persona de 65 años
Para probar diferentes escenarios, simplemente modifique el número de cédula en la solicitud SOAP.Welcome to the Wiki.