当我试图制作一个图形API调用Facebook时出现以下错误。我知道我的回调网址是好的,因为当我在facebook调试器中测试它时,它可以很好地查看页面。我也在使用Google App Engine,并且我真的认为这个错误可能与从Facebook访问我的GAE应用程序的异步调用有关,而使得URL提取的线程处于活动状态等待回复。脸书“无法从URL检索数据”
错误:
{"error":{"type":"Exception","message":"Could not retrieve data from URL."}}
我的代码进行调用:
URL url = new URL("https://graph.facebook.com/me/");
HttpURLConnection connection = (HttpURLConnection) url
.openConnection();
connection.setDoOutput(true);
connection.setRequestMethod("POST");
connection.setConnectTimeout(30000);
OutputStreamWriter writer = new OutputStreamWriter(
connection.getOutputStream());
writer.write("access_token=" + access_token + "&activity=" + ogpUrl);
writer.close();
if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
log.info("GraphApiHelper: success stream");
} else {
log.severe("GraphApiHelper: error stream: "
+ connection.getResponseMessage());
}
任何思考什么可能会导致这样或如果GAE奇怪的行为对这些类型的URL抓取操作的?如果导致问题,我还会增加连接的超时时间。不知道它是否相关,但我认为这是来自facebook linter的完全通用错误,因此可能意味着该调用本身存在问题。
此外,我可以看到Facebook的linter回调我的GAE应用程序在日志中,我没有看到任何错误,在该响应。
编辑:好吧,这显然是一个超时问题。我注意到,当一个新的GAE实例没有在facebook linter回调中启动时,它可以正常工作。当一个新的GAE实例启动时,它需要50秒左右的时间。我会在10秒内从Facebook返回错误。因此,无论是Facebook linter还是GAE URL抓取,这段时间都会超时。