Con este artículo desempolvo mi BLOG después de nueve años, y como es mi estilo, si tanto preámbulo vamos al grano.
Si deseamos consultar los datos de una persona mediante su DNI se ingresa al siguiente enlace de RENIEC:
Si procedo a realizar una consulta de DNI mediante el teclado de pantalla y tipeando el CAPTCHA, la web de RENIEC envía estos dos parámetros y devolviendo como resultado los nombres de la persona. El siguiente código realiza este proceso solicitando el CAPTCHA desde la web RENIEC y enviando estos dos parámetros para finalmente recepcionar el resultado en formato HTML.
- 'JAVIER ULLOA 24OCT16
- 'TECH FACTORY
- Imports System.Net
- Imports System.IO
- Public Class Form1
- #Region "VARIABLES"
- Private miCookie As New CookieContainer
- Public Enum eResultadoConsulta
- ConsultaSatisfactoria = 1
- ErrorDeCaptcha = 2
- DniNoEncontrado = 3
- Otro = 4
- End Enum
- #End Region
- #Region "VOID"
- Private Function obtieneImagenCaptcha()
- Dim UrlCaptcha As HttpWebRequest = WebRequest.Create("https://cel.reniec.gob.pe/valreg/codigo.do")
- UrlCaptcha.CookieContainer = Me.miCookie
- ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3
- UrlCaptcha.Credentials = CredentialCache.DefaultCredentials
- Dim Captcha As WebResponse = UrlCaptcha.GetResponse
- Dim imgCaptchaBinario As Stream = Captcha.GetResponseStream
- Return Image.FromStream(imgCaptchaBinario)
- End Function
- Public Function ObtieneDatosReniec(ByVal str_dni As String, ByVal str_captcha As String) As eResultadoConsulta
- Dim urlReniec As String = String.Format("https://cel.reniec.gob.pe/valreg/valreg.do?accion=buscar&nuDni={0}&imagen={1}", str_dni, str_captcha)
- Dim enlaceReniec As HttpWebRequest = WebRequest.Create(urlReniec)
- enlaceReniec.CookieContainer = Me.miCookie
- ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3
- enlaceReniec.Credentials = CredentialCache.DefaultCredentials
- Dim respuesta_web As WebResponse = enlaceReniec.GetResponse
- Dim myStream As Stream = respuesta_web.GetResponseStream
- Dim myStreamReader As New StreamReader(myStream)
- Dim Count As Integer = 0
- Dim LineaVerificacionTexto As String = ""
- While LineaVerificacionTexto = myStreamReader.ReadLine <> vbNull
- Count += 1
- Select Case Count
- Case 75
- LineaVerificacionTexto = myStreamReader.ReadLine.Trim
- LineaVerificacionTexto = myStreamReader.ReadLine.Trim
- If LineaVerificacionTexto.Trim.Length = 100 Then '<td height="63" class="style2" align="center">Ingrese el código que aparece en la imagen</td>
- Return eResultadoConsulta.ErrorDeCaptcha
- End If
- LineaVerificacionTexto = myStreamReader.ReadLine.Trim
- If LineaVerificacionTexto.Trim.Length = 59 Then '<td height="63" class="style2" align="center">El DNI N°
- Return eResultadoConsulta.DniNoEncontrado
- End If
- LineaVerificacionTexto = myStreamReader.ReadLine.Trim
- Me.lblNombres.Text = myStreamReader.ReadLine.ToString.Trim
- Me.lblApellidoPaterno.Text = myStreamReader.ReadLine.ToString.Trim
- Me.lblApellidoMaterno.Text = myStreamReader.ReadLine.ToString.Trim
- Me.lblApellidoMaterno.Text = Me.lblApellidoMaterno.Text.Replace("<br>", "")
- Return eResultadoConsulta.ConsultaSatisfactoria
- Exit While
- End Select
- LineaVerificacionTexto = myStreamReader.ReadLine.Trim
- End While
- Return eResultadoConsulta.Otro
- End Function
- #End Region
- Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
- Me.pbCapcha.Image = Me.obtieneImagenCaptcha
- End Sub
- Private Sub cmdConsultaDNI_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdConsultaDNI.Click
- Me.lblApellidoMaterno.ResetText()
- Me.lblApellidoPaterno.ResetText()
- Me.lblNombres.ResetText()
- Select Case Me.ObtieneDatosReniec(Me.txtDni.Text.Trim, Me.txtEscribirCodigo.Text.Trim)
- Case eResultadoConsulta.DniNoEncontrado
- Me.lblError.Visible = True
- Me.lblError.Text = "DNI NO ENCONTRADO"
- Case eResultadoConsulta.ErrorDeCaptcha
- Me.lblError.Visible = True
- Me.lblError.Text = "ERROR DE CAPTCHA"
- Case Else
- Me.lblError.Visible = False
- End Select
- End Sub
- Private Sub cmdRefrescar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdRefrescar.Click
- Me.pbCapcha.Image = Me.obtieneImagenCaptcha
- Me.lblError.Visible = False
- End Sub
- End Class
DESCARGA
7 comments:
MUY BIEN AMIGO MALKAVIAN... EXITOS!!!
Uno de estos días preparo el código y lo subiré a mi blog
gracias por el aporte muy útil
quisiera saber si se puede hacer una consulta en donde tengo registrado
en una lista. ejemplo
cod - nombre - apellidos - direccion - dni - bien - mal
la columna dni estan registrados correctamente que te diga cuentos estan mal y bien
gracias
En un próximo artículo publicaré un código para pasarle OCR a las imágenes CAPTCHA con esto no se tendría que tipear el texto y se enviaría directamente como parámetro los DNI los cojes de tu lista y haces un bucle.
amigo muchas gracias pero un favor lo tendras en C#?, estoy aprendiendo de buenos tutoriales como el tuyo, saludos
Está excelente el código muchas gracias por el aporte, pero hay un detalle, en la tercera vez
que se consulta, el código se congela por largo rato en esta linea:
Dim imgCaptchaBinario As Stream = Captcha.GetResponseStream
Hay Alguna razón para que esto suceda?
Gracias.
Saludos
https://cel.reniec.gob.pe/valreg/codigo.do
este Link no esta funcionando tu tienes la solucion ???
Error
This page can't be displayed. Contact support for additional information.
The incident ID is: N/A.
Post a Comment