2013-05-30 14 views
5

Korzystam z następujących elementów w mojej aplikacji, aby połączyć się z adresem URL i przeanalizować wynikową odpowiedź XML. Mój kłopot polega na tym, że nie mogę znaleźć sposobu na ustawienie limitu czasu w metodzie openStream(), tak aby tylko czekał około 5 sekund i jeśli nie otrzymano odpowiedzi, nie powiedzie się. Po prostu czeka i czeka. jakieś pomysły?Ustaw limit czasu na URL.openStream() Android

URL website = new URL(sb.toString());       
SAXParserFactory spf = SAXParserFactory.newInstance(); 
SAXParser sp = spf.newSAXParser(); 
XMLReader xr = sp.getXMLReader(); 
DataHandler h = new DataHandler(); 
xr.setContentHandler(h);    
xr.parse(new InputSource(website.openStream()));   

Odpowiedz

6

Wyliczyłem to. Używając metody URLConnection i wywołując metody setConnectionTimeout i setReadTimeout, jestem w stanie osiągnąć to, co chcę. Zaktualizowany kod poniżej ....

URLConnection conn = new URL(sb.toString()).openConnection(); 
conn.setConnectTimeout(5000); 
conn.setReadTimeout(5000); 
SAXParserFactory spf = SAXParserFactory.newInstance(); 
SAXParser sp = spf.newSAXParser(); 
XMLReader xr = sp.getXMLReader(); 
DataHandler h = new DataHandler(); 
xr.setContentHandler(h);    
xr.parse(new InputSource(conn.getInputStream()));  
0

jeśli chcesz zmienić go na URL:

website.openConnection().setReadTimeout(5000); 
website.openConnection().setConnectTimeout(5000);