Obter dados de URL .PHP com proxy [RESOLVIDO]

Gostaria de obter os dados da URL http://www.fundamentus.com.br/resultado.php, que é gerada a partir do botão BUSCAR em http://www.fundamentus.com.br/buscaavancada.php.

Já tentei alguns exemplos básicos que encontrei no site da sun, em alguns fóruns da internet e até um exemplo de request http aqui mesmo no GUJ (http://www.guj.com.br/articles/5#), mas sempre sem sucesso obtendo o erro abaixo.

[color=red]Exception in thread “main” java.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(Unknown Source)
at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at sun.net.NetworkClient.doConnect(Unknown Source)
at sun.net.www.http.HttpClient.openServer(Unknown Source)
at sun.net.www.http.HttpClient.openServer(Unknown Source)
at sun.net.www.http.HttpClient.(Unknown Source)
at sun.net.www.http.HttpClient.New(Unknown Source)
at sun.net.www.http.HttpClient.New(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source)
at teste.Teste.main(Teste.java:34)[/color]

Caso alguém tenha um código para ler uma página da net, consiga executa-lo com a URL http://www.fundamentus.com.br/resultado.php obtendo os dados e puder compartilha-lo, eu agradeceria muito.

Na verdade, agradeço antecipadamente a intenção de ajudar.

Cara,

Esse erro acontece quando você não está autorizado, ou teu código não contém autorização,
para efetuar a conexão.

Aqui na empresa, por exemplo, se eu tentar conectar via exemplo java, vai sempre gerar
esse erro

Exception in thread “main” java.net.ConnectException: Connection refused: connect

Por que para fazer a conexão aqui é preciso ultrapassar o proxy usando algum tipo de autorização.

Creio que seja isso que está acontecendo com você também.

tenta isso:

URL url = new URL("http://www.fundamentus.com.br/resultado.php");
        URLConnection conn = url.openConnection();
        BufferedReader input = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        String s = null;
        while (null != (s = input.readLine())) {
            System.out.println(s);
        }

lembrando que isso funciona independente da linguagem que o site foi escrito, isso porque toda requisição web é processada no servidor e é devolvida em html.
(ou xml, ou outra coisa dependendo do caso).

ou seja, isso funciona pra asp e pra jsp, e pra php, e pra rb…

Eu tentei:

try{
            URL url = new URL("http://www.fundamentus.com.br/resultado.php");
        
            URLConnection conn = url.openConnection();
            BufferedReader input = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String s = null;
            while (null != (s = input.readLine())) {
                System.out.println(s);
            }
        }
        catch(java.net.MalformedURLException ex){
            ex.printStackTrace();
        }
        catch(java.io.IOException ex){
            ex.printStackTrace();
        }

mas dá o erro: java.net.ConnectException: Connection timed out: connect

Pois como falei, não tenho como ultrapassar o proxy aqui da empresa.

Aliás, se puder ajudar, já que sugeriu o código acima, onde se coloca o usuário e a senha para poder ultrapassar o proxy via código???

Prezado JM4X,

foi um dos exemplos que tentei e continua dando exatamente o mesmo erro. Desculpe perguntar, mas você conseguiu obter retorno com este código e a URL citada (assim como está no código que enviou)?

O erro está na linha 25 que seria equivalente à: BufferedReader input = new BufferedReader(new InputStreamReader(conn.getInputStream()

[quote=JM4X]tenta isso:

URL url = new URL("http://www.fundamentus.com.br/resultado.php");
        URLConnection conn = url.openConnection();
        BufferedReader input = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        String s = null;
        while (null != (s = input.readLine())) {
            System.out.println(s);
        }

lembrando que isso funciona independente da linguagem que o site foi escrito, isso porque toda requisição web é processada no servidor e é devolvida em html.
(ou xml, ou outra coisa dependendo do caso).

ou seja, isso funciona pra asp e pra jsp, e pra php, e pra rb…[/quote]

Brother, aí você vai ter que fazer daí…

você tem que analisar o comportamento do seu proxy pra elaborar a solução…

basicamente vai ter que enviar um post para a action do formulario de autenticacao…

se for possível, tente fazer isso em javascript… axo que sai mais facil…

:wink:

Prezado JM4X,

muito obrigado por sua ajuda, consegui fazer assim:

1- Adicionei Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(“proxydaempresa.com.br”, 8080));
2- Adicionei a variável proxy em URLConnection conn = url.openConnection(proxy);

funcionou perfeitamente.

Código Completo
[color=blue]Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(“proxydaempresa.com.br”, 8080));
URL url = new URL(“http://www.fundamentus.com.br/resultado.php”);
URLConnection conn = url.openConnection(proxy);
BufferedReader input = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String s = null;
while (null != (s = input.readLine())) {
System.out.println(s);[/color]

Obtive o proxy da empresa nas configurações de proxy do firefox. Lá tinha um endereço para um arquivo .pac que continha o proxy da empresa e a porta utilizada.

[quote=JM4X]Brother, aí você vai ter que fazer daí…

você tem que analisar o comportamento do seu proxy pra elaborar a solução…

basicamente vai ter que enviar um post para a action do formulario de autenticacao…

se for possível, tente fazer isso em javascript… axo que sai mais facil…

;)[/quote]

mto bem. eu nem conhecia essa classe proxy…

Parabéns amigo! Só peço que edite seu primeiro post colocando no título [RESOLVIDO].

obrigado!