功能非常简单:
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 timeout exception因为我正在获取 facebook 服务器,而不是我自己的服务器。也不像“获取时超时”URLFetch GAE/J,因为问题不是一个非常大的提要,而是一个无响应的服务器(在响应测试用户的请求时特别慢)