elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  enviar datos de visual basic a una pagina web
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 3 Ir Abajo Respuesta Imprimir
Autor Tema: enviar datos de visual basic a una pagina web  (Leído 29,434 veces)
TheWarrior

Desconectado Desconectado

Mensajes: 8



Ver Perfil
enviar datos de visual basic a una pagina web
« en: 29 Agosto 2007, 23:27 pm »

quisiera saber como puedo enviar datos de vb a una pagina web X ejem. tengo caja de texto (Nombre) y que el contenido de esa caja de texto pase www.cualquierpagina.com a una de las casillas de esa pagina.

no se si me explique bien cualquier ayuda sera bienvenida de antemano muchas gracias ;D


En línea

Errar es de humanos rectificar es de Sabios
HaDeS, -
WarZone Master

Desconectado Desconectado

Mensajes: 284



Ver Perfil WWW
Re: enviar datos de visual basic a una pagina web
« Respuesta #1 en: 29 Agosto 2007, 23:39 pm »

Queres que los datos se envien al servidor? o simplemente poner los datos en las cajas de texto :P?
Si es la primera me se la respuesta, si es la segunda tendre que buscarla..
saludos ;)


En línea

TheWarrior

Desconectado Desconectado

Mensajes: 8



Ver Perfil
Re: enviar datos de visual basic a una pagina web
« Respuesta #2 en: 29 Agosto 2007, 23:45 pm »

Es la primera XD
En línea

Errar es de humanos rectificar es de Sabios
HaDeS, -
WarZone Master

Desconectado Desconectado

Mensajes: 284



Ver Perfil WWW
Re: enviar datos de visual basic a una pagina web
« Respuesta #3 en: 29 Agosto 2007, 23:54 pm »

ya te doy la respuesta :P estoy elaborando manualcillo xD
En línea

HaDeS, -
WarZone Master

Desconectado Desconectado

Mensajes: 284



Ver Perfil WWW
Re: enviar datos de visual basic a una pagina web
« Respuesta #4 en: 30 Agosto 2007, 00:56 am »

Ya esta:
Bueno, es un rollo interesante, tenemos que conocer muy bien la estructura de una peticion HTTP
primero miremos con el metodo GET y luego con el POST

Metodo GET.
1er paso: Identificar Variables
Entremos a mirar cualquier pagina, en este caso la pagina que valida los html (http://validator.w3.org/) y en esta localizamos en el codigo fuente la parte de los datos del formulario:
Código
  1. <form method="get" action="check">
  2. ...
  3. <label title="Address of page to Validate" for="uri">Address:</label>
  4. <input type="text" name="uri" id="uri" size="45" /> <!-- Variable1 -->
  5. ...
  6. <input type="submit" title="Submit for validation" value="Check" />
  7. </form>
  8.  
Las variables en este caso usadas para la peticion es unicamente una: "uri", y el contenido es la web que queremos validar.
El "Action" define a que pagina se le pasan los parametros, y el "Method" el metodo usado, puede ser GET o POST. En este caso GET.
Cuando hacemos click al boton de Check, lo que pasa es que estas variables son enviadas usando la URL. Queda entonces asi:
http://validator.w3.org/check?uri=http://web

2do paso: Metodo GET en peticiones http
La estructura para enviar datos por metodo get es el siguiente:

Código:
GET /pagina?var1=xxx&var2=xxx HTTP/1.1
Host: Servidor
Connection: close[enter]
[enter]

3er paso: Armando el codigo en visual
Vamos a poner un componente Winsock, dos cajas de texto, dos botones y un timer:
Winsock: Para enviar datos al servidor
Caja1: Contiene variable 1 que se va a pasar por el GET = Multiline a true, para soportar varias lineas
Caja2: Recibe la respuesta del servidor = Propiedad enabled a False
Boton1: Conecta
Boton2: Envia datos
Timer: Para vigilar el estado del winsock = Intervalo a 500 milisegundos

Código
  1. Const Host As String = "validator.w3.org" 'Constante del host
  2. Private Sub Command1_Click()
  3. Winsock1.Connect Host, 80 'Conectamos al host
  4. End Sub
  5.  
  6. Private Sub Command2_Click()
  7. Dim Peticion$
  8. Peticion = "GET /check?uri=http://" & Text2.Text & " HTTP/1.1" & vbCrLf & _ 'Text2.text = A la web que queremos validar .. /check?uri=http://...
  9.            "Host: " & Host & vbCrLf & _
  10.            "Connection: close" & vbCrLf & vbCrLf 'Armamos la peticion segun la estructura que te di
  11. Winsock1.SendData Peticion 'Mandamos la peticion
  12. End Sub
  13.  
  14. Private Sub Timer1_Timer()
  15. If Winsock1.State = sckConnected Then 'Checamos si la conexion es activa o no
  16.    Command1.Enabled = False
  17.    Command2.Enabled = True
  18. Else
  19.    Command1.Enabled = True
  20.    Command2.Enabled = False
  21. End If
  22. End Sub
  23.  
  24. Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
  25. Dim Datos$
  26. Winsock1.GetData Datos, vbString, bytesTotal 'Obtenemos los datos
  27. Text1.Text = Datos
  28. End Sub
  29.  
  30. 'Si queres grabar la respuesta en un html podes reemplazar lo anterior a
  31. Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
  32. Dim Datos$, Cabecera, Html$, Canal% 'Declaramos variables
  33. Winsock1.GetData Datos 'Obtenemos datos
  34. Text1.Text = Datos 'Ponemos contenido en la caja de texto
  35. If InStr(1, Datos, vbCrLf & vbCrLf, vbTextCompare) <> 0 And InStr(1, Datos, "HTTP/1.1 200 OK", vbTextCompare) Then 'Si es cabecera de servidor entonces..
  36.    Cabecera = Split(Datos, vbCrLf & vbCrLf, 2) 'Dividimos la respuesta en dos partes, la cabecera y el html
  37.    Html = Cabecera(1) 'El html es la segunda parte, la que es luego de los dos vbCrLf
  38. Else
  39.    Html = Datos 'Sino es cabecera entonces el html son los datos recibidos
  40. End If
  41. Canal = FreeFile
  42. Open App.Path & "\Respuesta.html" For Binary Access Write As Canal 'Abrimos el archivo de respuesta.html en modo binario
  43. Put #Canal, LOF(Canal) + 1, Html 'Escribimos al final del archivo
  44. Close #Canal 'Cerramos canal
  45. End Sub
  46.  

Metodo POST:
1er paso: Identificar variables
Al igual que el anterior caso, vamos a ver una pagina para poder enviar el post, en este caso quiero hacerle post a elhacker.net en un script php que tiene para cifrar cosas :P, nos vamos a http://elhacker.net/sneak.php
En este caso vemos un codigo diferente al anterior:
Código
  1. <form action="/sneak.php" method="post">
  2. ...
  3. <textarea name="text" ... ></textarea>
  4. <select name="cryptmethod">
  5. ...
  6. <option value="md5">MD5 Crypt (one way)</option>
  7. ...
  8. </select>
  9. <input type="submit" name="submit" value="Codificar" />
  10. ...
  11. </form>
  12.  
Ahora, lo enviado es lo que vamos a codificar, probemos con "HaDeS", text=HaDeS
El name cryptmethod es el metodo que vamos a elegir para cifrar el contenido, cryptmethod=md5
Y enviamos igualmente el valor del submit, submit=Codificar
La peticion entonces seria: text=HaDeS&cryptmethod=md5&submit=Codificar

2do paso: Metodo Post en peticiones http
La estructura del metodo post va asi:

Código:
POST /pagina HTTP/1.1
Host: Servidor
Connection: close
Content-Length: Longitud de lo que enviamos[enter]
[enter]
Lo que enviamos

3er paso: Armando el codigo en visual
Vamos a poner el mismo codigo anterior, pero modificando la peticion...
Código
  1. Const Host As String = "validator.w3.org" 'Constante del host
  2. Private Sub Command1_Click()
  3. Winsock1.Connect Host, 80 'Conectamos al host
  4. End Sub
  5.  
  6. Private Sub Command2_Click()
  7. Dim Peticion$, Datos$
  8. Datos = "text=" & Text2.Text & "&cryptmethod=md5&submit=Codificar"
  9. Peticion = "POST /sneak.php HTTP/1.1" & vbCrLf & _
  10.            "Host: " & Host & vbCrLf & _
  11.            "Connection: close" & vbCrLf & _
  12.            "Content-Type: application/x-www-form-urlencoded" & vbCrLf & _
  13.            "Content-Length: " & Len(Datos) & vbCrLf & vbCrLf & _
  14.            Datos
  15. Winsock1.SendData Peticion
  16. End Sub
  17.  
  18. Private Sub Timer1_Timer()
  19. If Winsock1.State = sckConnected Then 'Checamos si la conexion es activa o no
  20.    Command1.Enabled = False
  21.    Command2.Enabled = True
  22. Else
  23.    Command1.Enabled = True
  24.    Command2.Enabled = False
  25. End If
  26. End Sub
  27.  
  28. Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
  29. Dim Datos$
  30. Winsock1.GetData Datos, vbString, bytesTotal 'Obtenemos los datos
  31. Text1.Text = Datos
  32. End Sub
  33.  
  34. 'Si queres grabar la respuesta en un html podes reemplazar lo anterior a
  35. Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
  36. Dim Datos$, Cabecera, Html$, Canal% 'Declaramos variables
  37. Winsock1.GetData Datos 'Obtenemos datos
  38. Text1.Text = Datos 'Ponemos contenido en la caja de texto
  39. If InStr(1, Datos, vbCrLf & vbCrLf, vbTextCompare) <> 0 And InStr(1, Datos, "HTTP/1.1 200 OK", vbTextCompare) Then 'Si es cabecera de servidor entonces..
  40.    Cabecera = Split(Datos, vbCrLf & vbCrLf, 2) 'Dividimos la respuesta en dos partes, la cabecera y el html
  41.    Html = Cabecera(1) 'El html es la segunda parte, la que es luego de los dos vbCrLf
  42. Else
  43.    Html = Datos 'Sino es cabecera entonces el html son los datos recibidos
  44. End If
  45. Canal = FreeFile
  46. Open App.Path & "\Respuesta.html" For Binary Access Write As Canal 'Abrimos el archivo de respuesta.html en modo binario
  47. Put #Canal, LOF(Canal) + 1, Html 'Escribimos al final del archivo
  48. Close #Canal 'Cerramos canal
  49. End Sub
  50.  

Y listo, creo que eso es, ya si queres hacer todo automatico con el winsock, podes dividir la respuesta en lineas, analizando cada linea, sacas las variables y el metodo, y aplicas lo de arriba
saludos :P
« Última modificación: 30 Agosto 2007, 00:57 am por HaDeS, - » En línea

Kizar


Desconectado Desconectado

Mensajes: 1.325


kizar_net


Ver Perfil
Re: enviar datos de visual basic a una pagina web
« Respuesta #5 en: 30 Agosto 2007, 03:36 am »

Es bastante interesante el protocolo html, las cabeceras y demas, pero sino se quiere complicar que use el control de IE con el que puede rellenar formularios y mandarlos en dos lineas. Busca en este subforo que e puesto algun code.
En línea

HaDeS, -
WarZone Master

Desconectado Desconectado

Mensajes: 284



Ver Perfil WWW
Re: enviar datos de visual basic a una pagina web
« Respuesta #6 en: 30 Agosto 2007, 04:09 am »

Es bastante interesante el protocolo html, las cabeceras y demas, pero sino se quiere complicar que use el control de IE con el que puede rellenar formularios y mandarlos en dos lineas. Busca en este subforo que e puesto algun code.
No es por nada, pero eso que escribiste sono muy mediocre, me parece que la mejor forma de aprender algo es exprimiendolo hasta el fondo, no se trata de coger componentes que ya estan hechos y hacer una simple linea de codigo e indicarle que use tal evento de tal componente. Y no creo tampoco que TheWarrior se interese por cosas simples. Entonces mejor me dicen no vuelvo a hacer manualcillos, porque no voy a estar botando el tiempo como lo hice haciendo eso por personas que solo se interesan por lo facil.

Saludos ;)
En línea

LeandroA
Moderador
***
Desconectado Desconectado

Mensajes: 760


www.leandroascierto.com


Ver Perfil WWW
Re: enviar datos de visual basic a una pagina web
« Respuesta #7 en: 30 Agosto 2007, 04:50 am »

Estoy completamente deacuerdo con HaDeS, la forma mas profesional de hacer estas cosas es de esta forma, porque? al utilizar las librerias del IE tanto sea por apis wininet o el mismo control webbrowser o el Inet (MSInet.ocx), quizas estas nos puedan simplificar un poco las cosas, pero  estamos perdiendo mucha informacion como ser las cabeseras y  el control de las cosas que pasan de por medio, otra es que quedamos parado hasta que estos controles o apis nos devuelvan una respuesta, tomen como ejemplo un cliente ftp echo con las apis del wininet, como veran nuestro programa se va a ir colgando por cada peticion que se envie, y porque con los programas ftp profecionales no pasa esto? pues por la sencilla razón de que utilizan este metodo (obio no en el protocolo fpt).
y bien muchas otras rasones mas, y si bien muchos dirian pero el control winsock no esta en todas las pc. y los demas si, pues si quieren hacer algo mas profesional aun no dependan de este ocx y utilizen las apis ws2_32.dll



Felizitaciones HaDeS por el Manual

una observacion
creo que esta linea seria mejor asi

If InStr(1, Datos, vbCrLf & vbCrLf) <> 0 And Flag = False Then
Flag =true

puse Flag en el general como una variable boolean porque me a pasado en ocasiones que la cabesera termina de llegar en el segundo paquete entonces esta condicion no se cumpliria And InStr(1, Datos, "HTTP/1.1 200 OK"

Saludos
En línea

Carloswaldo
Traductor
Moderador Global
***
Desconectado Desconectado

Mensajes: 4.764


Nos reservamos el derecho de ban.


Ver Perfil WWW
Re: enviar datos de visual basic a una pagina web
« Respuesta #8 en: 30 Agosto 2007, 05:05 am »

Totalmente de acuerdo con HaDeS, - y LeandroA, lo mejor es aprender desde el fondo, yo ya toy analizando el codigo haber que puedo aprender (si apreciamos tu trabajo HaDeS no te preocupes  :P)

c-ya  :P
En línea





Dominio en venta: https://forojapones.com/
Kizar


Desconectado Desconectado

Mensajes: 1.325


kizar_net


Ver Perfil
Re: enviar datos de visual basic a una pagina web
« Respuesta #9 en: 30 Agosto 2007, 16:03 pm »

Para aprender desde el fondo, no useis el winsock que es un ocx mas prefabricado.
Para hacer peticiones http usar las apis que os permiten mandar cabeceras, elegir el metodo, cookies, recibir la pagina y demas...
Código:
Private Declare Function InternetOpen Lib "wininet" Alias "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
Private Declare Function InternetConnect Lib "wininet.dll" Alias "InternetConnectA" (ByVal hInternetSession As Long, ByVal sServerName As String, ByVal nServerPort As Integer, ByVal sUserName As String, ByVal sPassword As String, ByVal lService As Long, ByVal lFlags As Long, ByVal lContext As Long) As Long
Private Declare Function HttpOpenRequest Lib "wininet.dll" Alias "HttpOpenRequestA" (ByVal hHttpSession As Long, ByVal sVerb As String, ByVal sObjectName As String, ByVal sVersion As String, ByVal sReferer As String, ByVal something As Long, ByVal lFlags As Long, ByVal lContext As Long) As Long
Private Declare Function HttpSendRequest Lib "wininet.dll" Alias "HttpSendRequestA" (ByVal hHttpRequest As Long, ByVal sHeaders As String, ByVal lHeadersLength As Long, ByVal sOptional As String, ByVal lOptionalLength As Long) As Long
Private Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Integer

http://articulos.conclase.net/jm/prog/cpp/wininethttp_2.html
En línea

Páginas: [1] 2 3 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Enviar datos de un formulario de una pagina JSP a una clase.
Java
h3ct0r 3 8,330 Último mensaje 22 Febrero 2011, 20:07 pm
por h3ct0r
Enviar datos a una funcion en a misma pagina
PHP
Zeroql 4 4,302 Último mensaje 12 Junio 2011, 08:35 am
por Nakp
Enviar datos de una página a otra
PHP
KeyPy HH 1 2,807 Último mensaje 24 Octubre 2012, 16:43 pm
por [u]nsigned
Cambiar una página por otra Visual Basic
.NET (C#, VB.NET, ASP)
Adrylek 3 2,700 Último mensaje 10 Agosto 2013, 22:55 pm
por Eleкtro
Como enviar hexa en visual basic?
Programación Visual Basic
Fucko 5 4,133 Último mensaje 27 Marzo 2014, 07:53 am
por Fucko
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines