Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Estou montando um formulário que recebe os dados do site pegos com curl http://www.nfe.fazenda.gov.br/portal/consulta.aspx?tipoConsulta=completa
Mas na hora de realizar a consulta só resulta em "A sessão expirou. Faça a consulta novamente."
Estou mandando os seguintes dados:
'ctl00$ContentPlaceHolder1$txtChaveAcessoCompleta'
'ctl00$ContentPlaceHolder1$txtCaptcha'
'__EVENTTARGET'
'__EVENTARGUMENT'
'__VIEWSTATE'
'__VIEWSTATEGENERATOR'
'__EVENTVALIDATION'
'ctl00$ContentPlaceHolder1$token'
'ctl00$ContentPlaceHolder1$captchaSom'
'hiddenInputToUpdateATBuffer_CommonToolkitScripts'
Sim, o código da consulta, onde $campos_post está o array com o value dos campos:
$ch = curl_init('http://www.nfe.fazenda.gov.br/portal/consultaCompleta.aspx?tipoConteudo=XbSeqxE8pl8=');;)
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_POST,count($campos_post));
curl_setopt($ch, CURLOPT_POSTFIELDS, $campos_post); // aqui estão os campos de formulário
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookieFile); // dados do arquivo de cookie
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookieFile); // dados do arquivo de cookie
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0) Gecko/20100101 Firefox/8.0');
curl_setopt($ch, CURLOPT_COOKIE, $cookie); // dados de sessão
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_MAXREDIRS, -1);
curl_setopt($ch, CURLOPT_REFERER, "[http://www.nfe.fazenda.gov.br/portal/consulta.aspx?tipoConsulta=completa");](http://www.nfe.fazenda.gov.br/portal/consulta.aspx?tipoConsulta=completa)
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$html = curl_exec($ch);Você está fixando o valor do cookie?
Pois se for um cookie de sessão, o valor dele muda a cada requisição. Você tem que fazer a primeira requisição, receber o valor do cookie e enviá-lo nas requisições seguintes
eu gero o cookie e salvo em um txt, e ai mando o cookie que está salvo da primeira requisição.
Alguma solução para o problema amigo ?
Também estou no mesmo barco
Pessoal, estou com o mesmo problema, alguém conseguiu solucionar?
Alguém tem essa solução?
O site deve enviar algum cookie que identifique a sessão. Esse cookie deve ser enviado junto em todas as requisições subsequentes.