«Тайм-аут при получении» URLFetch GAE / J - PullRequest
8 голосов
/ 08 ноября 2010

Я использую XMLReader, чтобы просто читать ленту, как показано ниже.

URLConnection urlConnection = url.openConnection(); 
XmlReader reader = new XmlReader(urlConnection); 

Когда это вызывается, я получаю в течение 5 секунд IOException "Timeout во время извлечения ". Поэтому я попытался установить максимальное время ожидания (10 секунд), но все равно не повезло и все еще IOExeption через 5 секунд.

urlConnection.setConnectTimeout(10000); 

(максимум указан в документации: http://code.google.com/intl/nl-NL/appengine/docs/java/urlfetch/overview.html)

Кажется, что размер корма слишком велик. Когда я называю меньший канал это работает правильно. Есть ли обходной путь или решение для этого? Мне нужно иметь возможность звонить на большие каналы.

Ответы [ 2 ]

11 голосов
/ 08 ноября 2010

Вы должны использовать setReadTimeout метод, который устанавливает крайний срок чтения:

urlConnection.setReadTimeout(10000); //10 Sec

Вы сможете загружать более крупные каналы за 10 секунд.
Если у вас все еще есть проблема, попробуйте поиграть с этим другим подходом.

0 голосов
/ 29 марта 2017

Причина:

Если для периода ожидания чтения нет доступных данных, может возникнуть исключение. От Документ Oracle

Исключение SocketTimeoutException может генерироваться при чтении из возвращенного входного потока, если истекает время ожидания до того, как данные станут доступны для чтения.

Кстати, ReadTimeout отличается от ConnectTimeout, тайм-аут чтения - это тайм-аут для получения данных от хоста, см. другой тайм-аут соединения и тайм-аут чтения

Так что в качестве ответа @systempuntoout необходимо установить время ожидания чтения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...