vspara 0 Denunciar post Postado Maio 14, 2010 Ola Pessoal, Estou tentando fazer um POST em um formulário e depois recuperar a página retornada, o máximo que consegui chegar foi: <?php $cURL = curl_init('http://www.trt11.jus.br:8080/Portal/pages/numeracaounica/layout/layoutconsultanumeracaounica.jsf'); curl_setopt($cURL, CURLOPT_RETURNTRANSFER, true); // Definimos um array seguindo o padrão: // " => " $dados = array( 'form1:numerolabel' => '1', 'form1:anolabel' => '2007', 'form1:vara' => '6', 'form1:processo1' => '', 'form1:digito' => '', 'form1:anoCNJ' => '', 'form1:justica' => '', 'form1:orgao' => '', 'form1:vara1' => '', 'form1:_id37.x' => '15', 'form1:_id37.y' => '1', 'form1_SUBMIT' => '1', 'autoScroll' => '0', 'form1:_link_hidden_' => '' ); curl_setopt($cURL, CURLOPT_POST, true); curl_setopt($cURL, CURLOPT_POSTFIELDS, $dados); curl_setopt($cURL, CURLOPT_REFERER, 'http://www.trt11.jus.br:8080/Portal/pages/numeracaounica/layout/layoutconsultanumeracaounica.jsf'); //curl_setopt($cURL, CURLOPT_COOKIE, '__utma=48240739.935107741.1269980028.1272476977.1273271613.4; __utmz=48240739.1269980028.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmb=48240739.39.10.1273271613; //JSESSIONID=E005A9EB94F5F861D1C1426DD670C4A7; ASPSESSIONIDCSSTBBQD=DPLNOMDCDBJCMNMIOJDBDAGC; __utmc=48240739'); $resultado = curl_exec($cURL); echo $resultado; curl_close($cURL); ?> Se eu estiver muito longe da solução, posso até pagar por isto, mas por favor, alguém dê uma luz, já apanhei muito! Valeu galera! Abraço! Compartilhar este post Link para o post Compartilhar em outros sites
oce@n 0 Denunciar post Postado Maio 14, 2010 oi! não sei se ajuda, mas já pensou usar? onClick="javascript: history.go(-1)" ;) Compartilhar este post Link para o post Compartilhar em outros sites
falcao544 11 Denunciar post Postado Maio 14, 2010 Ou esse: header("Location: $_SERVER['HTTP_REFERE']"); Compartilhar este post Link para o post Compartilhar em outros sites
oce@n 0 Denunciar post Postado Maio 14, 2010 exacto. Mas falta um "R header("Location:".$_SERVER['HTTP_REFERER'].""); Compartilhar este post Link para o post Compartilhar em outros sites
Bruno Augusto 417 Denunciar post Postado Maio 14, 2010 Olha, a princípio não vejo problemas com o código. Você consegue realizar a transação pelo nevegador, de modo normal? Se sim, aquilo que você vê quando "passa" da página correspondente à URL de curl_init() difere daquilo que você recebe em $resultado? Se for diferente, experimente passar por curl_setopt() o valor TRUE para CURLOPT_FOLLOWLOCATION. Isso fará com que caso a página acessada redirecione para uma outra, sua requisição seja redirecionada também. Nota: Quando questiono diferença entre os retornos manual e programático, me refiro ao conteúdo em si e não à forma como ele é apresentado (estilos visuais, imagens...) porque, dependendo como o site foi construído, os URL's usados para CSS e tags IMG, por exemplo, possuem caminhos relativos o que, sem uma tag base de nada adianta para quem vê através de uma requisição. Compartilhar este post Link para o post Compartilhar em outros sites
vspara 0 Denunciar post Postado Maio 14, 2010 exacto. Mas falta um "R header("Location:".$_SERVER['HTTP_REFERER'].""); Não sei se me expressei bem, mas faltou dar um detalhe muito importante que é a página é em JSF, o código funciona para outros formulários e tals, somente não funciona pra este formulário neste site, não entendo como o location, eu não quero que ele me jogue pra página e sim que leia seu conteudo para que eu possa manipula-lo. Olha, a princípio não vejo problemas com o código. Você consegue realizar a transação pelo nevegador, de modo normal? Se sim, aquilo que você vê quando "passa" da página correspondente à URL de curl_init() difere daquilo que você recebe em $resultado? Se for diferente, experimente passar por curl_setopt() o valor TRUE para CURLOPT_FOLLOWLOCATION. Isso fará com que caso a página acessada redirecione para uma outra, sua requisição seja redirecionada também. Nota: Quando questiono diferença entre os retornos manual e programático, me refiro ao conteúdo em si e não à forma como ele é apresentado (estilos visuais, imagens...) porque, dependendo como o site foi construído, os URL's usados para CSS e tags IMG, por exemplo, possuem caminhos relativos o que, sem uma tag base de nada adianta para quem vê através de uma requisição. Ele não mostra nada em $resultado, esse é o problema. Testei a sua sugestão e continua ocorrendo o mesmo, a página fica demora um pouco pra carregar e depois da como concluída sendo que nada foi exibido em $resultado. Ta osso! Muito obrigado pelo ajuda de todos, espero que continuem ajudando! Compartilhar este post Link para o post Compartilhar em outros sites
Bruno Augusto 417 Denunciar post Postado Maio 15, 2010 Troque o curl_exec() por: $resulttado = curl_exec($cURL) or die( curl_error( $cURL ) ); E, ao invés de um echo, use um var_dump() em $resultado. Poste o que retorna. E mais, se curl_error() não retornar nada, verifique se suas configurações de mostragem de erro estão ativadas, colocando, no início do script: ini_set( 'display_errors', TRUE ); error_reporting( E_ALL | E_STRICT ); Compartilhar este post Link para o post Compartilhar em outros sites
vspara 0 Denunciar post Postado Maio 15, 2010 Troque o curl_exec() por: $resulttado = curl_exec($cURL) or die( curl_error( $cURL ) ); E, ao invés de um echo, use um var_dump() em $resultado. Poste o que retorna. E mais, se curl_error() não retornar nada, verifique se suas configurações de mostragem de erro estão ativadas, colocando, no início do script: ini_set( 'display_errors', TRUE ); error_reporting( E_ALL | E_STRICT ); Com certeza, agora com sua dica, visualizei o erro: couldn't connect to host Ai deu pra pesquisar muitas outras coisas na net, mas geralmente o erro estaria vinculado a configurações do meu servidor, só que pra outras páginas funciona normal, então já descartei essa hipótese. O site que estou tentando acessar deve ter alguma proteção, ou algo do tipo. Estou usando o HttpFox pra analisar o acesso ao site, estou repetindo os mesmos campos e valores, mas mesmo assim não vai, to quase desistindo, estou há mt tempo nesse problema. Mais uma vez, obrigado por ajudar! Compartilhar este post Link para o post Compartilhar em outros sites
Bruno Augusto 417 Denunciar post Postado Maio 15, 2010 Ou, talvez, o fato de o site ser acessado via porta 8080 e uma requisição HTTP "normal" é pela 80, você esteja tendo esse problema. Experimente remover a indicação de porta do URL de acesso (:8080) e adicionar, via curl_setopt() essa porta, sem os dois pontos: curl_setopt( $cURL, CURLOPT_PORT, '8080' ); Ou, ainda, tentar essa detecção de qual porta será usada automaticamente, via variável de ambiente: curl_setopt( $cURL, CURLOPT_PORT, $_SERVER['SERVER_PORT'] ); Veja se agora conecta. Compartilhar este post Link para o post Compartilhar em outros sites
vspara 0 Denunciar post Postado Maio 15, 2010 Ou, talvez, o fato de o site ser acessado via porta 8080 e uma requisição HTTP "normal" é pela 80, você esteja tendo esse problema. Experimente remover a indicação de porta do URL de acesso (:8080) e adicionar, via curl_setopt() essa porta, sem os dois pontos: curl_setopt( $cURL, CURLOPT_PORT, '8080' ); Ou, ainda, tentar essa detecção de qual porta será usada automaticamente, via variável de ambiente: curl_setopt( $cURL, CURLOPT_PORT, $_SERVER['SERVER_PORT'] ); Veja se agora conecta. Oi Imaggens, O PORT eu já tinha tentado, ele continua sem conectar: couldn't connect to host Quando usei o segundo comando, ele da 404 e não acha a página. Acredito que o maior problema aqui seja porque a solicitação está fora do contexto do JSF. O que mais me intriga, é que tem vários software que fazem o que estou tentando fazer, é pra minha mulher, fiz um sisteminha pra ela mas sem isto não adianta muito. Obrigado mais uma vez pela ajuda!!! Abraços Ah... Também tentei alterar os TIMEOUT e não tive sucesso. Compartilhar este post Link para o post Compartilhar em outros sites
Bruno Augusto 417 Denunciar post Postado Maio 16, 2010 Olha, o fato de a página ser em JSF não influencia, porque toda a pogramação (que é o que feito em TODOS os serviços do governo que conheço) é feita no servidor. Aquilo que você vê é HTML + CSS + JavaScript (muito obstrusivo por sinal). Eu testei aqui localmente: error_reporting( E_ALL | E_STRICT ); echo '<base href="http-~~-//www.trt11.jus.br:8080" />'; $cURL = curl_init( 'http-~~-//www.trt11.jus.br:8080/Portal/pages/numeracaounica/layout/layoutconsultanumeracaounica.jsf' ); $resultado = curl_exec( $cURL ) or die( curl_error( $cURL ) ); echo $resultado; curl_close( $cURL ); E funcionou normalmente. Perceba que removi todas as opções passadas, paraverificar se alguma delas poderia estar influenciando no erro. Adicionei também um HTML Base para poder ver melhor. Sei que a intenção é fazer uma requisição POST para consultar, mas pelo fato de você ter recebido um erro de conexão ao host, significa que você sequer consegue reproduzir o mesmo que eu fiz. E é aí que está o problema. Tste esse código e veja se você vê como retorno pelo menos a página inicial com os formulários, tal qual se estivesse acessando pelo browser. Se não estiver, isto é, continuar recebendo o mesmo erro, pode ser problema de configuração do seu servidor local ou remoto. Compartilhar este post Link para o post Compartilhar em outros sites
vspara 0 Denunciar post Postado Maio 16, 2010 Você tem razão, eu tinha descartado este problema porque ele conseguia acessar outros sites, acho que o servidor tinha um bloqueio pra porta 8080, troquei de servidor e agora o post está funcionando, esbarrei agora num problema maior, mas vou apanhar mais um pouco até perguntar algo por aqui pra não encher tanto, hehe! Valeu mesmo! Compartilhar este post Link para o post Compartilhar em outros sites