Boas amigos.
Me encontro num problema o qual não faço menor ideia de como irei resolve e conto com a ajuda de vocês.
Estou acessando o seguinte endereço: " http://www.nfe.fazenda.gov.br/portal/consulta.aspx?tipoConsulta=completa&tipoConteudo=XbSeqxE8pl8%3d "
O que deve acontecer:
Resgate de captcha ( ok, funciona )
Porem o post está me matando, quando faço o primeiro GET na pagina, ele me retorna o hash base64, beleza, mas ai num outro metodo que faz o post tenho que criar o mesmo componente e automaticamente ele cria uma nova hash base64, pois ele da outro get.
Tentei colocar o HttpWebRequest como STATIC e o CookieContainer tambem, o Cookie funcinou, já o Http ele não aceita que eu modifique após o primeiro GET.
Utilizar WebService não é uma opção devido a logica do negócio ( limitação do webservice do SEFAZ que me permite baixar apenas 50 notas )
Codigo da minha tentativa de consulta ( POST )
private string _erro;
public Image Captcha;
private static CookieContainer cookieContainer;
private String UrlBase = "http://www.nfe.fazenda.gov.br/portal/consulta.aspx?tipoConsulta=completa&tipoConteudo=XbSeqxE8pl8%3d";
public String ErroDetectado { get { return _erro; } }
protected HttpWebRequest req;public void ConsultarNota(string chave, string captcha) { string parametros = "ctl00$ContentPlaceHolder1$txtChaveAcessoCompleta=" + System.Uri.EscapeDataString(chave) + "&ctl00$ContentPlaceHolder1$txtCaptcha=" + System.Uri.EscapeDataString(captcha) + "&ctl00$ContentPlaceHolder1$btnConsultar=Continuar"; req = (HttpWebRequest)WebRequest.Create(UrlBase); req.CookieContainer = cookieContainer; req.ContentLength = parametros.Length; req.ContentType = "application/x-www-form-urlencoded"; req.Method = "POST"; req.Timeout = 20000; req.AllowAutoRedirect = true; StreamWriter stParametros = new StreamWriter(req.GetRequestStream(), Encoding.GetEncoding("ISO-8859-1")); stParametros.Write(parametros); stParametros.Close(); HttpWebResponse response = (HttpWebResponse)req.GetResponse(); if (response.StatusCode == HttpStatusCode.OK) { StreamReader stHtml = new StreamReader(req.GetResponse().GetResponseStream(), Encoding.GetEncoding("ISO-8859-1")); string retorno = stHtml.ReadToEnd(); } }
Notas importantes:
Uma vez que vc clica em consultar/continuar no site, ele da um post para a url que comentei no inicio e ela redireciona para a seguinte url:
" http://www.nfe.fazenda.gov.br/portal/consultaCompleta.aspx?tipoConteudo=XbSeqxE8pl8= "
Mas se eu tentar dar post direto nessa pagina, ele me retorna que a sessão expirou.