Como hacer una conexion http/1.1 en vb.net

Iniciado por snakeboy8, 21 Diciembre 2014, 02:18 AM

0 Miembros y 1 Visitante están viendo este tema.

snakeboy8

alguien me podria decir como hacer una conexion http/1.1 en vb.net?

cuando aprendi a programar en vb6 usaba el winsock.ocx pero cuando pase a .net segui usando el winsock.ocx por que no he encontrado una libreria que haga lo mismo esta es la funcion que uso


Código (vbnet) [Seleccionar]
   Private Sub AxWinsock4_ConnectEvent(sender As Object, e As EventArgs) Handles AxWinsock4.ConnectEvent
       Dim Cadstr As String
       Cadstr = "variable=valor&variable2=valor"
       
       AxWinsock4.SendData("POST /pagina.php HTTP/1.1" & vbCrLf & _
           "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*" & vbCrLf & _
           "Accept-Encoding: gzip, deflate" & vbCrLf & _
           "Accept-Charset: utf-8" & vbCrLf & _
           "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90)" & vbCrLf & _
           "Host: " & AxWinsock4.RemoteHost & ":" & AxWinsock4.RemotePort & vbCrLf & _
           "Content-Length: " & Len(Cadstr) & vbCrLf & _
           "Connection: Keep-Alive" & vbCrLf & _
           "Cache-Control: no-cache" & vbCrLf & vbCrLf & _
           Cadstr & vbCrLf)
   End Sub




y con esto proceso los datos recibidos

Código (vbnet) [Seleccionar]

   Private Sub AxWinsock4_DataArrival(sender As Object, e As AxMSWinsockLib.DMSWinsockControlEvents_DataArrivalEvent) Handles AxWinsock4.DataArrival
       Dim Datos As String = 100000
       On Error Resume Next

       AxWinsock4.GetData(Datos)

       If InStr(Datos, "404 Not Found") <> 0 Then

           Me.Close()
       End If
   End Sub



he encontrado ejemplos de como hacer algo asi masomenos pero usan directamente servidores ip y relmente no me sirve por que lo que quiero es que conecte a una pagina como si estubiera usando el explorador y poder procesar el codigo como lo hace el codigo que puse.

seba123neo

Hola, usa las clases de .NET, no uses mas los controles OCX viejos de vb6.

Código (vbnet) [Seleccionar]
Imports System.Net.Sockets

saludos.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

Eleкtro

#2
Cita de: darky666 en 21 Diciembre 2014, 02:18 AMcuando aprendi a programar en vb6 usaba el winsock.ocx pero cuando pase a .net segui usando el winsock.ocx por que no he encontrado una libreria que haga lo mismo esta es la funcion que uso

Añado a lo que te ha comentado el compañero @seba123neo:


Winsock.NET

No te estoy recomendando la librería (sobre todo por que en el source usa malísimas practicas al ser del año 2005 también), pero está basado en la utilización del Namespace Sockets, así que quizás no haya mejor ejemplo para familiarizarte con una sintaxis que ya conocias (la de winsock.ocx) ya que el autor le asignó los mismos nombres a los métodos etc, plus puedes examinar el source para ir aprendiendo el manejo de los miembros del Namespace Sockets, y así hacerlo por ti mismo sin necesidad de depender de librerías ni ActiveX, ya que no resulta necesario.

Además, lee la referencia oficial:
System.Net.Sockets Namespace




Entiendo que vienes de VisualBasic6 y no te has acostumbrado, pero esto debes evitarlo en VB.Net:
Código (vbnet) [Seleccionar]
On Error Resume Next

Es una técnica obsoleta al considerarse improductiva/ineficiente (en vb.net), y por ende es una mala práctica, en su lugar puedes usar un bloque try/catch/finally.

Utilizar las funciones de VB6 como InStr es otra mala prácica, ya que la librería de Classes de .Net framework aparte de exponer un Wrapper de las funciones de VB6 también pone a tu disposición un equivalente de todas esas funciones en VB.Net, las cuales siguen los estándares de la programación actual.

Saludos!








snakeboy8

muchas gracias por sus respuestas me ayudaron al 100 ahora uso los sockets de .net por fin despues de años no usare mas la libreria winsock.ocx  ;-)