Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: .:Weeds:. en 10 Diciembre 2010, 03:14 am



Título: [APORTE] Cómo utilizar las clases HttpWebRequest y HttpWebResponse
Publicado por: .:Weeds:. en 10 Diciembre 2010, 03:14 am
De este tema en Internet vi poca información y me dispongo a explicar lo que aprendí en este foro de la mano de .::IT::. de como usar estas clases.

¿Que hacen estas clases?
El HttpWebRequest hace una petición a la url indicada y el HttpWebResponse devuelve los datos de la petición, esta es su función principal y "creo" que es su única función.

¿Para qué?
Para sacar contenido de una web, ya sea un objeto o simplemente un texto.

Pasos a seguir.

Lo primero de todo es Importar lo siguiente para que reconozca las clases.
Código
  1. Imports System.Net
  2. Imports System.IO

Vallamos al grano, ahora nos dispondremos a guardar la Url de la petición en una variable String(No hace falta pero viene bien si le quieres dar formato como en este ejemplo, donde valpepito es {0} y valpepe es {1}).
Código
  1. Dim MyUrl As String = String.Format("http://www.eldominio.com/?pepito={0}&pepe={1}", valpepito, valpepe)

El siguiente paso es declarar la petición Http
Código
  1. Dim MyHttpWebRequest As HttpWebRequest = CType(WebRequest.Create(MyUrl), HttpWebRequest)

Algo importante es declarar las credenciales de identificación, muchas veces me ha dado error por no declarar este paso, lo que hacemos es hacer la petición con las credenciales estandar.
Código
  1. MyHttpWebRequest.Credentials = CredentialCache.DefaultCredentials

Una vez que hemos declarado como queremos hacer la petición, la enviamos.
Código
  1. Dim MyHttpWebResponse As HttpWebResponse = CType(MyHttpWebRequest.GetResponse(), HttpWebResponse)

A continuación leemos los bytes enviados por el servidor.
Código
  1. Dim MyStream As Stream = MyHttpWebResponse.GetResponseStream

Y guardamos los bytes en un streamreader.
Código
  1. Dim MyStreamReader As StreamReader = New StreamReader(MyStream)

Ahora guardaremos el contenido del stream en una string.
Código
  1. Dim MyHtml As String = MyStreamReader.ReadToEnd

Organizamos el MyHtml que tenemos por líneas.
Código
  1. Dim MyHtmlEnLineas() As String = MyHtml.Split(vbNewLine)

Ahora nos dispondremos a seleccionar la línea en la que se encuentra el contenido que queremos sacar de la web.(Donde 1 es la linea 1)
Código
  1. Dim MyLinea As String = MyHtmlEnLineas(1)

Lógicamente de esa linea sólo queremos un texto determinado de este, en nuestro caso del carácter 1 al 5.
Código
  1. MyLinea = Mid(MyLinea, 1, 5)

Y por fin tenemos en MyLinea la información que queríamos, no ha sido tan difícil no? ;)

Ahora solo quedaría como ultimo detalle para los más perfeccionistas limpiar las variables para que no consuman recursos.
Código
  1. MyUrl = Nothing
  2. MyHttpWRequest = Nothing
  3. MyHttpWResponse = Nothing
  4. MyStream = Nothing
  5. MyStreamReader = Nothing
  6. MyHtml = Nothing
  7. 'etc...

Espero que le sirva a alguien esta explicación, el tema es más extenso pero me he dedicado a explicar lo esencial. Sin más que decir.

Saludos.


Título: Re: [APORTE] Cómo utilizar las clases HttpWebRequest y HttpWebResponse
Publicado por: .::IT::. en 10 Diciembre 2010, 03:45 am
:o aclarar que eso sería para una simple petición de una pagina y por lo que veo enviando valores por GET (ósea por medio de la url) para POST seria un poco diferente seria interesante que lo coloques. les dejo un link:

http://www.codeproject.com/KB/IP/httpwebrequest_response.aspx

Saludos!!!!!!! y gracias por compartir!!!



Título: Re: [APORTE] Cómo utilizar las clases HttpWebRequest y HttpWebResponse
Publicado por: [D4N93R] en 10 Diciembre 2010, 03:45 am
Buen aporte, agregado a temas interesantes!