我正在使用 struts1 做项目。我正在使用 ROME 获取 RSS 提要,但在两种情况下失败:
- 当我的防火墙禁止 rss url 时(响应码 403)
- 当我插入不正确的 rss 网址时
为了避免这种情况,我应该怎么做?
我正在使用 struts1 做项目。我正在使用 ROME 获取 RSS 提要,但在两种情况下失败:
为了避免这种情况,我应该怎么做?
有些情况你根本无法避免。
您无法避免网络中断,您无法避免错误键入的 URL。
但是,您可以做的是检查网络是否可达,以及 URL 是否输入正确。
您应该捕获异常并向用户提供有意义的错误消息。
只需捕获异常并处理它们。
关于 403
一些提要似乎有一些保护(对于 DDOS)所以基于用户代理(在你的情况下是“Java”)他们拒绝你阅读提要所以你必须设置自己的用户代理(如 firefox 用户代理),之前像这样打开连接
System.setProperty("http.agent", USER_AGENT);
URLConnection openConnection = url.openConnection();
is = url.openConnection().getInputStream();
if ("gzip".equals(openConnection.getContentEncoding())) {
is = new GZIPInputStream(is);
}
InputSource source = new InputSource(is);
input = new SyndFeedInput();
syndicationFeed = input.build(source);
XmlReader reader = new XmlReader(url);
syndicationFeed = input.build(reader);
我当前的 USER_AGENT 字符串是
"Mozilla/5.0 (Windows NT 10.0; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0";