Olá!
Tenho uma classe java a correr que se liga a URL e, usando DOM, lê valores de um XML.
A classe está sempre a correr, mas tem acontecido durante a noite a seguinte exception:
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)
at java.net.PlainSocketImpl.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.<init>(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 Sour
ce)
at sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown So
urce)
at java.net.URL.openStream(Unknown Source)
Alguém me dá uma dica pq isto acontece?
Thankx
Cláudia
Oi Claudia, desculpe a demora…
Pode fazer da seguinte maneira…
URL url = new URL("http://matadourosbl.no-ip.info/matadouro/data.php");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
DataInputStream in = new DataInputStream(url.openStream());
while (in.available() > 0) System.out.println(in.readLine());
Esse seu código roda de tempos em tempos, conectando a esse URL e parseando os dados XML com DOM?
E normalmente isso funciona mas às vezes durante a noite dá essas exceções?
Se esse for o caso, não concordo muito com as sugestões dadas aqui. Parece mais provável que seu código tá bom, só que o serviço que você está usando não está disponível às vezes. Talvez o sistema for desligado durante um tempinho a noite para fazer backup, talvez às vezes ocorram problemas da rede, ou alguma coisa desse gênero.
É mesmo isso!
Uso uma thread que acorda de hora a hora, faz o parser do xml e guarda-os em DB.
Inicial/ tb pensei o mesmo que o Same, que fosse problema do servidor de dados, mas agora não estou mto convencida disso.
Tenho a certeza que o código funciona, mas ao fim de algum tempo a correr, obtenho a tal excepção e é despoletada pela linha:
InputStream inputXML = url.openStream();
Então li o tutorial aqui do GUJ, e vi que talvez falte a parte
Luis real/ o problema deve ser do servidor web que estou requisitando. Com o url do guj não há timeouts!!!
Só mais uma coisa, podes me explicar a diferença entr os códigos:
URL url = new URL("http://www.guj.com.br");
InputStream inputXML = url.openStream();
OU
URL url = new URL("http://www.guj.com.br");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
DataInputStream in = new DataInputStream(url.openStream());
Pq não percebi sem criar a ligação http funciona, entao kal a diferença entre colocar esta linha ou não?!
Obrigada,
Cláudia