PR

RESTなWebサービスをPHPで操作する

2010年1月19日(火)
藤本 壱

ブックマーク追加の手順

AtomAPIでは、情報を新たに追加する際には、POSTプロトコルでWebサーバーにアクセスし、追加する情報を渡します。

はてなブックマークでは、「http://b.hatena.ne.jp/atom/post」というアドレスにアクセスし、リスト2のようなXMLのデータを渡すと、ブックマークを追加することができます。
--------------------------------------------------------------------------------
【リスト2】 ブックマークの追加に使うXML

     ダミーのタイトル
     
     

コメント

--------------------------------------------------------------------------------

また、通信が正常に終了した場合、Webサービスからクライアントに対して、通信結果の情報が送信されてきます。その中には、追加した情報に対応する編集用のアドレスが含まれています。後で情報の編集や削除を行う際には、そのアドレスが必要になります。

はてなブックマークの場合、通信が正常終了すると、リスト3のようなXML形式のデータが返されます。この6行目にある「atom/edit/ページのID」が、編集用のアドレスになります。
--------------------------------------------------------------------------------
【リスト3】 通信の結果
<?xml version="1.0" encoding="utf-8"??>

     ブックマークしたページのタイトル
     
     
     
     
          ユーザー名
     

     Hatena::Bookmark
     
     tag:hatena.ne.jp,2005:bookmark-ユーザー名-ページのID
     

コメント

--------------------------------------------------------------------------------

ブックマークを追加するプログラム

はてなブックマークにAtomAPI(AtomPub)でアクセスし、ブックマークを追加するプログラムを作ると、リスト4のようになります。
--------------------------------------------------------------------------------
【リスト4】 ブックマークを追加するプログラム
<?php
require_once 'HTTP/Request.php';
require_once 'auth_wsse.php';

$bookmark_url = 'ブックマークするページのアドレス';
$comment = 'コメント';

$req =& new HTTP_Request('http://b.hatena.ne.jp/atom/post');
$req->setMethod(HTTP_REQUEST_METHOD_POST);
set_auth_wsse($req);
$postdata =
     dummy
     
     

${comment}

HERE;
$req->addRawPostData($postdata);
if (PEAR::isError($req->sendRequest())) {
     exit('通信エラーが発生しました');
}
$code = $req->getResponseCode();
if ($code == 201) {
     print "ブックマークを追加しました";
     $resp = trim($req->getResponseBody());
     $xml = new SimpleXMLElement($resp);
     $links = $xml->link;
     foreach ($links as $link) {
          if ($link['rel'] == 'service.edit') {
               print "編集用のアドレス" . $link['href'] . "\n";
          }
     }
}
else {
     print "エラーが発生しました:コード = ${code}\n";
}
?>
--------------------------------------------------------------------------------

このプログラムと、1ページ目で作った「auth_wsse.php」ファイルを、同じディレクトリ(フォルダ)に入れます。また、5行目の「ブックマークするページのアドレス」と、6行目の「コメント」を、実際のアドレスやコメントに適宜書き換えます。

8行目と9行目で、「http://b.hatena.ne.jp/atom/post」にPOSTプロトコルで接続するようにしています。そして、処理が成功したら、結果のXMLから「atom/edit/ページのID」の部分を抜き出し、「編集用のアドレス:atom/edit/ページのID」のように表示します。

このプログラムを実行した後に、はてなブックマークにログインすると、ブックマークが追加されていることが分かります。

例えば、ブックマークするページのアドレスを「http://thinkit.jp/article/1057/1/」(Think ITの「データベースの運用と管理の基本(1/3)」という記事)にし、またコメントを「データベース基礎中の基礎」にして、プログラムを実行するとします。

その後にはてなブックマークにログインすると、実際にブックマークが追加され、コメントも投稿されていることが分かります(図2)。

次ページでは、これまで説明してきた新規ブックマークの追加に加え、PUTプロトコルを用いて既存のブックマークを編集するやり方について解説します。

1969年生まれ。神戸大学工学部電子工学科卒。ソフトメーカー勤務後、フリーライターとして独立。現在では、パソコン関係およびマネー関係の書籍を中心に執筆活動を行っている。ブログ「The blog of H.Fujimoto」は、Movable TypeやWordPressの情報を中心に毎日更新している(http://www.h-fj.com/blog/)。

Think IT会員サービス無料登録受付中

Think ITでは、より付加価値の高いコンテンツを会員サービスとして提供しています。会員登録を済ませてThink ITのWebサイトにログインすることでさまざまな限定特典を入手できるようになります。

Think IT会員サービスの概要とメリットをチェック

他にもこの記事が読まれています

RESTなWebサービスをPHPで操作する | Think IT(シンクイット)

Think IT(シンクイット)

サイトに予期せぬエラーが起こりました。しばらくたってから再度お試しください。