none
Problema con el http Webrequest RRS feed

  • Pregunta

  • Buenas,

    Ante todo mandaros saludos, ya que me acabo de registrar y este es mi primer mensaje, el caso es que tengo un problema con el httpWebRequest y estoy buscando un alma caritativa que me pueda ayudar a solucionarlo.


    Tengo el siguiente código:

             
    webRequest = (HttpWebRequest)WebRequest.Create(C_URILOGEO);
              webRequest.Method = "POST";
              webRequest.ContentType = "application/x-www-form-urlencoded";
              webRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)";
              webRequest.KeepAlive = true;
              cookContainer = new CookieContainer();
              webRequest.CookieContainer = cookContainer;
              webRequest.Credentials = new NetworkCredential(C_USER, C_PASSWORD);
              webRequest.AllowAutoRedirect = false;
    
              postData = Encoding.ASCII.GetBytes("GwcLoginGS$GwcCampoIDLNIF=" + C_USER + "&GwcLoginGS$GwcCampoTXTPwdAux=" + C_PASSWORD);
             webRequest.ContentLength = postData.Length;
             stRequest = webRequest.GetRequestStream();
             stRequest.Write(postData, 0, postData.Length);
             stRequest.Close();
                   
             webResponse = (HttpWebResponse)webRequest.GetResponse();
             cookContainer.Add(webRequest.RequestUri, webResponse.Cookies);
             String newLocation = webResponse.Headers["Location"];
             if (webResponse.StatusCode == HttpStatusCode.Found)
                 Console.WriteLine(Convert.ToInt16(webResponse.StatusCode) + " " + webResponse.StatusDescription);
             webResponse.Close();


    Con esto lo que quiero es acceder a una web para obtener unos datos que necesito para comprobarlos con mi base de datos, el problema que tengo es el siguiente, he visto en otros lados que una vez obtenido el logueo, lo que hay que hacer es guardar el contenedor de cookies (que se supone contiene la sesión) y utilizarlo para un nuevo objeto httpWebRequest que es de donde realmente tengo que obtener los datos, esto lo hago desde aquí:

    webRequest = (HttpWebRequest)WebRequest.Create(C_URI_DIVERSOS);
    Console.WriteLine(webRequest.Address.ToString());
    webRequest.Referer = C_URILOGEO; 
    webRequest.CookieContainer = cookContainer;
    webRequest.AllowAutoRedirect = false;
    webRequest.Credentials = CredentialCache.DefaultCredentials;
    CookieCollection colec = webRequest.CookieContainer.GetCookies(webRequest.RequestUri); 
    Console.WriteLine(new StreamReader(webRequest.GetResponse().GetResponseStream()).ReadToEnd());


    El caso es que con el codigo en el que supuestamente me mostraria el contenido de la página que es el segundo me redirige a lo que seria una especie de página de login, cuando he cogido para crear el stream en el que paso los datos de login el campo de nombre de usuario y el campo con el password, lo que me choca es que siempre devuelve un 302 (encontrado), pero ¿hay alguna forma de saber realmente si se ha logado correctamente?.

    Muchas gracias por vuestra ayuda chic@s.

    Un saludo
    miércoles, 25 de noviembre de 2009 11:46

Todas las respuestas