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);
				}
			}
		}
	}

rome: ROME: RSS/Atom syndication and publishing tools

個人用ツール