none
httpwebresponse Vs Cookies

    Pergunta

  • Boa tarde pessoal. Estou com um problema:

    Estou a desenvolver uma aplicação que me dê um httpwebresponse de uma paginax, mas até chegar a essa paginax vou passando por outras paginas. O problema é quando chego a uma parte, ou seja, ao 3 HTTPWEBRequest não consigo ter o response correspondente. O problema é que o site utiliza o proxy juniper e eu não sei se tem a ver com isto. Mas houve uma altura que consegui, e agora não consigo. parte do codigo é o seguinte:

     

     

    protected void Page_Load(object sender, EventArgs e)

     

    {

     

     

    CookieContainer cookieJar = new CookieContainer();

     

    CookieContainer cookieJar2 = new CookieContainer();

     

     

    HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("pagina1");

    req.UserAgent =

    "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; GTB7.2; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; .NET CLR 1.1.4322)";

    req.Method =

    "GET";

    req.Accept =

    "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";

    req.Headers.Add(

    "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7");

    req.Headers.Add(

    "X-Requested-With", "XMLHttpRequest");

    req.Headers.Add(

    "Accept-Language", "pt-pt,pt;q=0.8,en;q=0.5,en-us;q=0.3");

    req.Headers.Add(

    "Accept-Enconding", "gzip, deflate");

    req.CookieContainer = cookieJar;

    req.KeepAlive =

    true;

    req.Headers.Add(

    "Keep-Alive: 300");

    req.AllowAutoRedirect =

    true;

    req.ContentType =

    "application/x-www-form-urlencoded;charset=WINDOWS-1252";

    req.CookieContainer = cookieJar;

     

    HttpWebResponse response = (HttpWebResponse)req.GetResponse();

     

    StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding(1255));

     

    string tmp = reader.ReadToEnd();

     

    // Add cookies to CookieJar (Cookie Container)
     

     

    foreach (Cookie cookie in response.Cookies)

    {

    cookieJar.Add(

    new Cookie(cookie.Name.Trim(), cookie.Value.Trim(), cookie.Path, cookie.Domain));

    }

     

    HttpWebRequest req2 = (HttpWebRequest)HttpWebRequest.Create("pagina2(paginalogin)");

    req2.UserAgent =

    "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:9.0.1) Gecko/20100101 Firefox/9.0.1";

    req2.Method =

    "GET";

    req2.Accept =

    "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";

    req2.Headers.Add(

    "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7");

    req2.Headers.Add(

    "X-Requested-With", "XMLHttpRequest");

    req2.Headers.Add(

    "Accept-Language", "pt-pt,pt;q=0.8,en;q=0.5,en-us;q=0.3");

    req2.Headers.Add(

    "Accept-Enconding", "gzip, deflate");

    req2.KeepAlive =

    true;

    req2.CookieContainer = cookieJar;

    req2.Headers.Add(

    "Keep-Alive: 300");

     

     

    HttpWebResponse response2 = (HttpWebResponse)req2.GetResponse();

     

    StreamReader reader2 = new StreamReader(response2.GetResponseStream(), Encoding.GetEncoding(1255));

     

    string tmp2 = reader2.ReadToEnd();

     

    foreach (Cookie cookie in response2.Cookies)

    {

    cookieJar.Add(

    new Cookie(cookie.Name.Trim(), cookie.Value.Trim(), cookie.Path, cookie.Domain));

    }

     

     

    string total = response2.ResponseUri.ToString();

     

    string parte = total.Substring(78, 32);

     

     

    HttpWebRequest req3 = (HttpWebRequest)HttpWebRequest.Create(response2.ResponseUri);

    req3.UserAgent =

    "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:9.0.1) Gecko/20100101 Firefox/9.0.1";

    req3.Method =

    "GET";

    req3.Accept =

    "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";

    req3.Headers.Add(

    "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7");

    req3.Headers.Add(

    "X-Requested-With", "XMLHttpRequest");

    req3.Headers.Add(

    "Accept-Language", "pt-pt,pt;q=0.8,en;q=0.5,en-us;q=0.3");

    req3.Headers.Add(

    "Accept-Enconding", "gzip, deflate");

    req3.KeepAlive =

    true;

    req3.CookieContainer = cookieJar;

    req3.Headers.Add(

    "Keep-Alive: 300");

     

     

    HttpWebResponse response3 = (HttpWebResponse)req3.GetResponse();

     

    StreamReader reader3 = new StreamReader(response3.GetResponseStream(), Encoding.GetEncoding(1255));

     

    string tmp3 = reader3.ReadToEnd();

     

    foreach (Cookie cookie in response3.Cookies)

    {

    cookieJar.Add(

    new Cookie(cookie.Name.Trim(), cookie.Value.Trim(), cookie.Path, cookie.Domain));

    }

    

    depois aqui deveria de me redirecionar para a seguinte pagina, mas não o faz volta para a página de login. Utilizando o fiddler ou o live http headers do mozzila ele dá-me mais cookies do que aqueles que adiciono ao fazer o foreach:

    foreach (Cookie cookie in response3.Cookies)

    {

    cookieJar.Add(

    new Cookie(cookie.Name.Trim(), cookie.Value.Trim(), cookie.Path, cookie.Domain));

    }

    Alguma sugestão para o problema? Será que me faltam cookies?

    terça-feira, 17 de janeiro de 2012 17:02

Todas as Respostas

  • O Proxy funciona filtrando requisições, veja se desabilitando o mesmo o problema persiste.
    Atenciosamente, Marcio Nogueira Cardoso Pinto.
    terça-feira, 17 de janeiro de 2012 17:21
  • Não posso porque o proxy é instalado automaticamente ao aceder ao servidor do pedido, ou seja, não tenho controlo sobre ele
    terça-feira, 17 de janeiro de 2012 17:27
  • Ele gera algum ex?
    Não esqueça de usar o componente </> na barra para posta seu código. Microsoft MCPD,MCTS,MCC
    terça-feira, 17 de janeiro de 2012 18:09
  • Que eu saiba não.....alguma ideia......

    Já tentei pesquisar acerca do assunto e deste proxy mas nada, sinceramente eu acho que não passo os cookies todos visto que no fiedler dão-me mais do que aqueles que eu capto no FOREACH

    terça-feira, 17 de janeiro de 2012 18:19