Функция очень проста:
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:
Это не проблема, как в этой теме: Исключение времени ожидания urlfetch GoogleAppEngine , потому что я получаю серверы facebook, а не свой собственный сервер. Также не похоже на «Время ожидания при получении» URLFetch GAE / J , поскольку проблема не в очень большом фиде, а в не отвечающем сервере (особенно медленном при ответе на запросы тестовых пользователей)