Функция очень проста:
public static String readURL(URL url, HTTPMethod method) throws IOException {
FetchOptions opt = FetchOptions.Builder.doNotValidateCertificate();
HTTPRequest request = new HTTPRequest (url, method, opt);
URLFetchService service = URLFetchServiceFactory.getURLFetchService();
HTTPResponse response = service.fetch(request);
byte[] content = response.getContent();
return new String(content);
}
Проблема в том, что иногда я получаю исключение:
java.lang.RuntimeException: java.io.IOException: Timeout while fetching: https://graph.facebook.com...
Что я хотел бы сделать, так это включить функцию в цикл while() или что-то подобное, чтобы она продолжала попытки, пока не будет получен ответ. Как вы думаете, какой подход будет лучшим? Я иду в правильном направлении или вы бы предложили что-то совершенно другое? Увеличение тайм-аута до 10 секунд, как было предложено в некоторых других сообщениях, должно избежать большинства проблем, но не устранить проблему.
Спасибо.
PS 1: Строка FetchOptions opt = FetchOptions.Builder.doNotValidateCertificate();
нужна, чтобы избежать другой проблемы,
HTTP ERROR 500
Problem accessing /auth. Reason:
javax.net.ssl.SSLHandshakeException: Could not verify SSL certificate for: https://graph.facebook.com/oauth/access_token?...
PS 2: это не проблема, как в этой теме: исключение времени ожидания GoogleAppEngine urlfetch, потому что я m загружаю серверы facebook, а не свой собственный сервер. Также не похоже на время ожидания при получении URLFetch GAE/J, потому что проблема не в очень большой поток, но не отвечающий сервер (особенно медленный при ответе на запросы тестовых пользователей)