Ler XML de um endereço http

3 respostas
P

Tenho o seguinte código para ler o conteúdo (XML) de um endereço http normal:

try {
            int timeout = 300 * 1000;
            URL httpURL = new URL("http://...");
            HttpURLConnection conn = (HttpURLConnection) httpURL.openConnection();
            conn.setReadTimeout(timeout);
            InputStream is = conn.getInputStream();
            BufferedReader reader = new BufferedReader(new InputStreamReader(is));
            String xml = new String();
            while ((xml = reader.readLine()) != null) {
                System.out.println(xml);
            }            
        } catch (Exception e) {
            e.printStackTrace();
        }

Porém me ocorre o seguinte erro (de timeout):

java.net.ConnectException: Connection timed out: connect
	at java.net.PlainSocketImpl.socketConnect(Native Method)
	at java.net.PlainSocketImpl.doConnect(Unknown Source)
	at java.net.PlainSocketImpl.connectToAddress(Unknown Source)...

Alguma idéia do que possa ser? Detalhe: quando executo o programa ele não espera os 5 minutos que configurei para o timeout, ele lança esse erro bem antes.

3 Respostas

rafaelgimenes

amigo, vc setou o timeout pra 300 segundos, eu acho que isso é muito talvez.

não entendi pq falou de 5 minutos.

voce pode tratar essa exceção de timeout e dar uma mensagem apropriada ou tomar uma ação corretiva setando uma flag pra continuar tentanto por um numero x de tentativas e depois desistir de vez.

abraço

P

300 segundos são 5 minutos :slight_smile:

E é preciso que o timeout seja longo pois é demorado pra carregar e ler o endereço em questão…

E também não quero tratar a exceção, quero fazer funcionar mesmo…

Mas obrigado pela ajuda mesmo assim.

rafaelgimenes

disfarça o erro matematico meu…

então trate a exceção alimentando uma flag, enquanto a flag vc fica tentanto… melhor do que aumentar o timeout e ficar com uma conexao pendurada por um longo tempo, do outro lado mesmo pode ter controle de time out do lado do server…

Criado 8 de agosto de 2012
Ultima resposta 8 de ago. de 2012
Respostas 3
Participantes 2