Estoy creando una aplicación para la recuperación de datos desde la página web. La página está protegida con contraseña y cuando el usuario inicia sesión, se crea la cookie.cómo usar cookies con HttpWebRequest
Para recuperar los datos primero la aplicación tiene que iniciar sesión: hacer una solicitud web con nombre de usuario y contraseña y almacenar la cookie. Luego, cuando se almacena la cookie, debe agregarse a los encabezados de todas las solicitudes.
aquí es el método que realiza peticiones y recupera el contenido:
public void getAsyncDailyPDPContextActivationDeactivation()
{
HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(dailyPDPContextActivationDeactivation);
IAsyncResult asyncResult = httpWebRequest.BeginGetResponse(null, null);
asyncResult.AsyncWaitHandle.WaitOne();
using (HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.EndGetResponse(asyncResult))
using (StreamReader responseStreamReader = new StreamReader(httpWebResponse.GetResponseStream()))
{
string responseText = responseStreamReader.ReadToEnd();
}
}
¿Alguien sabe cómo modificar este método con el fin de añadir una cookie en el encabezado?
A continuación se muestra la pantalla de impresión de la estructura de la cabecera de la solicitud con el navegador:
alt text http://img404.imageshack.us/img404/4793/cookiea.jpg
Me gustaría también agradecer si alguien sugiere una manera de almacenar cookies de la respuesta (cuando las marcas de aplicaciones una solicitud http: xxx.xxx.xxx/login? username = xxx & password = xxx la cookie se ha creado y debe almacenarse para futuras solicitudes).
No entiendo realmente. ¿Por qué pondría un contenedor de galletas recién creado (por lo que está vacío) en la solicitud que está a punto de enviar? ¿No debería ser mucho más lógico que tengas que llenar esa cookieContainer más adelante con la respuesta? ¿Hay alguna razón por la cual sea así? editar: Muchas respuestas se dan de esta manera, pero simplemente no puedo entender por qué se hace de esta manera. – deltu100
Mi aplicación tiene un comportamiento no deseado al usar eso. Uso de httpWebRequest2.Headers.Set ("Cookie", ... funciona bien. – Eduardo
Si he iniciado sesión en la página web anteriormente, hay una cookie almacenada en mi HD para poder omitir el registro de manera programática. la solicitud web busca automáticamente y llena el contenido con las cookies encontradas, o ¿tiene que hacerlo manualmente? ¿Cómo se hace eso, si este último? –