2011-12-19 4 views
1

Я пытаюсь получить некоторые данные с удаленного сервера. Для этого я использую HttpURLConnection. Проблема в том, что иногда сервер после подключения устанавливается просто зависает или что, не закрывает соединение, и я там вишу. Кроме того, что вешали нить приобрел замок, так что все все остальные нити просто сосательный: D Код:Java http read timeout issue

try { 
     URL url = new URL(urlString); 
     URLConnection urlConnection = url.openConnection(); 
     HttpURLConnection connection = (HttpURLConnection) urlConnection; 

     BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream(), Charset.forName(CharEncoding.UTF_8))); 
     StringBuilder sb = new StringBuilder(); 
     String line; 
     while ((line = br.readLine()) != null) { 

Последняя линия, где мы повешение. Я нашел метод setConnectTimeout(timeout), но кажется, что это не так, потому что это таймаут, прежде чем соединение будет установлено. Каков общий способ решения таких ситуаций?

+0

тайм-аут, прежде чем соединение установлено? то вы бы не дошли до цикла while, или я что-то не понимаю? – posdef

+0

Извините, я написал здесь непонятно. Я хотел найти такой метод в классе HttpURLConnection;) В моем коде не было тайм-аутов. – whatswrong

+0

не беспокоится. Я рад, если бы смог помочь решить проблему, что бы это было :) – posdef

ответ

3

при условии, вы имели в виду таймаут после установления соединения (вероятно, во время чтения), как о чем-то вроде этого

URLConnection urlConnection = url.openConnection(); 
urlConnection.setConnectTimeout(c_timeout); 
urlConnection.setReadTimeout(r_timeout); 
stream = urlConnection.getInputStream(); 
+0

О, я не нашел этот метод. Кажется, тайм-аут решения решит эту проблему. Благодаря! Постарайтесь. – whatswrong