Jsoup1.7.2无法使用谷歌应用引擎1.7.5

时间:2013-06-24 09:08:15

标签: java google-app-engine jsoup

我正在开发一个项目,我的应用程序托管在Google App Engine上并使用Jsoup html解析库。在我的应用程序中,我正在使用具有默认队列的TaskQueues,该队列中唯一的任务是连接到URL并开始解析页面。日志文件中不会出现任何错误或警告,它只是退出,因为它没有看到解析文档的Jsoup行。以下是我的代码片段:

log.warning("Before connection");
Document doc = Jsoup.connect("http://en.wikipedia.org/").get();
log.warning("After connection");

TaskQueue工作正常,我已经测试过,我100%确定没有问题。 我试图手动连接到网页并下载它然后将其传递给Jsoup并开始解析它,连接工作正常并且网页已成功下载,但Jsoup无法做任何事情。 我最大的问题是日志文件中没有错误和警告;所以我不知道它到底发生了什么。

2 个答案:

答案 0 :(得分:0)

App引擎限制了许多类,我认为Jsoup.connect(url)或.parse方法依赖于其中一个受限类并引发异常。

为了消除Jsoup.connect导致问题的可能性,我建议您使用App Engine URL Fetch在URL处获取页面的字符串,然后使用:

Document doc = Jsoup.parse(htmlString);

但是如果解析存在问题,那么你真的需要让错误/日志记录工作,而且这里还没有很多信息可以提出建议。尝试将有问题的代码放在try-catch块中,看看是否可以捕获异常。

另外尝试更高版本的GAE SDK(1.8.1是当前版本)。我之前与GAE SDK的checkRestricted方法存在冲突,干扰了Jsoup,因此1.7.5可能就是这种情况。

答案 1 :(得分:0)

问题是我使用的是Jsoup 1.7.2,它显然与Google App Engine不太兼容。我切换回Jsoup 1.7.1并解决了问题。