Romeでフィードの取得
提供: Astarisk Works Wiki
JavaでRSSやatomを使うときに便利なライブラリROMEの基本的な使い方。
public void getFeed(String url) throws IOException{
String cachePath = System.getProperty("cachePath", CACHE_PATH);
// HTTPを元にフィードを取得するクラス「FeedFetcher」
FeedFetcherCache feedCache = new DiskFeedInfoCache(cachePath);
FeedFetcher fetcher = new HttpClientFeedFetcher(feedCache);
((HttpClientFeedFetcher)fetcher).setConnectTimeout(TIME_OUT);
((HttpClientFeedFetcher)fetcher).setReadTimeout(TIME_OUT);
SyndFeed feed = null;
try {
feed = fetcher.retrieveFeed(new URL(url));
}catch (MalformedURLException e){
//URLが不正の場合の処理
e.printStackTrace();
}catch (IllegalArgumentException e) {
// 取得したものがFeedで無かった場合の処理
e.printStackTrace();
} catch (FeedException e){
// 取得したものがテキスト以外だった場合の処理
e.printStackTrace();
} catch (FetcherException e){
//コンテンツが取得できなかった場合の処理
e.printStackTrace();
} catch (UnknownHostException e) {
//ホストが見つからないとき
e.printStackTrace();
} catch (NoRouteToHostException e){//ホストが見つからないエラー
e.printStackTrace();
} catch (Exception e){//その他のエラー
e.printStackTrace();
}
System.out.println(feed.getFeedType());
System.out.println(feed.getUri());
System.out.println(feed.getTitle());
//feedがpodcastを含むかどうかを調べる
if (!feed.getEntries().isEmpty()){
for (Object obj : feed.getEntries()){
SyndEntry entry = null;
if (obj instanceof SyndEntry) {
entry = (SyndEntry)obj;
} else {
continue;
}
//エントリーがエンクロージャを持つかどうかを確認
if (entry.getEnclosures().isEmpty()){
continue;
} else {
result.setHasPodcast(true);
}
}
}
}