Java 如何编写URLFetch以避免超时异常?GAE/J+;Facebook应用程序

Java 如何编写URLFetch以避免超时异常?GAE/J+;Facebook应用程序,java,google-app-engine,facebook-graph-api,urlfetch,Java,Google App Engine,Facebook Graph Api,Urlfetch,功能非常简单: public static String readURL(URL url, HTTPMethod method) throws IOException { FetchOptions opt = FetchOptions.Builder.doNotValidateCertificate(); HTTPRequest request = new HTTPRequest (url, method, opt); URLFetchService service =

功能非常简单:

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秒可以避免大多数问题,但不能消除问题。

谢谢


附注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?...
附注2:
这不是一个类似于此线程的问题:因为我获取的是facebook服务器,而不是我自己的服务器。这也不像是因为问题不是一个很大的提要,而是一个没有响应的服务器(在响应测试用户的请求时特别慢)

首先,将urlfetch超时增加到
10秒
,这将在引发的超时异常更少方面产生巨大的差异

我会第一次尝试从Web处理程序下载facebook数据,如果出现超时异常,我会将任务移动到一个服务器

进入TaskQueue后,如果引发超时异常且任务失败,App Engine会自动重试,尝试下载Url内容,直到成功

import com.google.appengine.api.taskqueue.Queue;
import com.google.appengine.api.taskqueue.QueueFactory;
import static com.google.appengine.api.taskqueue.TaskOptions.Builder.*;

        Queue downloadqueue = QueueFactory.getDefaultQueue();
        queue.add(withUrl("/worker").param("url", urlToFetch))

关于facebook的SSL问题,如果是你在最新的1.4.2中遇到的问题。下载SDK(不是用eclipse手动下载),我知道这是1.4.2中的一个bug,我把它作为一种解决方法。我不知道问题已经解决了。谢谢你的提示。比while()循环更优雅的解决方案。那么我会深入研究TaskQue。谢谢