とりあえず、まずはBlogの一覧を表すEntryをあらわすメソッドを作成。
/** * Blog一覧を取得 * @return * @throws IOException * @throws ServiceException */ public Mapこれで、Blog名をキーとしてBlogのEntryを取得できる。getBlogMap() throws IOException, ServiceException{ final URL feedUrl = new URL("http://www.blogger.com/feeds/default/blogs"); Feed resultFeed = service.getFeed(feedUrl, Feed.class); Map blogMap = new HashMap (); // Print the results for (int i = 0; i < resultFeed.getEntries().size(); i++) { Entry entry = resultFeed.getEntries().get(i); blogMap.put(entry.getTitle().getPlainText(), entry); } return blogMap; }
ここからBlogIDを取得するメソッドは以下のとおり。
protected String toBlogId(Entry entry){ Matcher m = Pattern.compile("blog-(.\\d+)$").matcher(entry.getId()); if(m.find()){ return m.group(1); } return ""; }で、このBlogIDを使うとBlogに記事を書いたり、記事を取得したりできる。
/** * 記事の一覧を取得する * @param blog * @throws ServiceException * @throws IOException */ public ListgetEntryList(Entry blog) throws ServiceException, IOException { List entryList = new ArrayList (); URL feedUrl = new URL("http://www.blogger.com/feeds/"+toBlogId(blog)+"/posts/default"); Feed resultFeed = service.getFeed(feedUrl, Feed.class); for (int i = 0; i < resultFeed.getEntries().size(); i++) { Entry entry = resultFeed.getEntries().get(i); entryList.add(entry); } return entryList; } /** * 記事を投稿する * * @param blog * @param title * @param content * @throws IOException * @throws ServiceException */ public void createPost(Entry blog, String title, String content) throws IOException, ServiceException { Entry myEntry = new Entry(); myEntry.setTitle(new PlainTextConstruct(title)); myEntry.setContent(new PlainTextConstruct(content)); URL postUrl = new URL("http://www.blogger.com/feeds/"+toBlogId(blog)+"/posts/default"); service.insert(postUrl, myEntry); }