関数は非常に単純です。
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 タイムアウト例外。自分のサーバーではなく、Facebook サーバーを取得しているためです。「フェッチ中のタイムアウト」 URLFetch GAE/Jのようなものでもありません。これは、問題が非常に大きなフィードではなく、応答しないサーバー (テスト ユーザーからの要求に応答するときに特に遅い) にあるためです。