プログラマメモ2 - programmer no memo2

del.icio.us API - httpclientを使ってみる その2 2008/04/27



del.icio.us APIです。以前に書いた記事のやき直しです。

Programming Collective Intelligence: Building Smart Web 2.0 Applicationsという本をぱらぱらめくっているとdel.icio.us APIを使っている箇所があり、本のサンプルですと、Pythonです。

集合知の実験にはdel.icio.usって対象としておもしろい。

おすすめ書籍
Programming Collective Intelligence: Building Smart Web 2.0 Applications
Toby Segaran
0596529325

使用しているライブラリは、HttpComponentsです。


以下、参考。

  • エラー処理は特に気にしてません。
  • HTTPステータスコードの取得はorg.apache.http.StatusLineが便利です。
  • コンテントの取得は、org.apache.http.util.EntityUtilsが便利です。
  • org.apache.http.util.EntityUtilsを使う場合、toStringでエンコードを指定したほうが無難な気がします。


以下、コード
package dtb;

import java.io.IOException;
import java.net.URISyntaxException;

import org.apache.http.HttpEntity;
import org.apache.http.HttpException;
import org.apache.http.HttpResponse;
import org.apache.http.StatusLine;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;

public class DeliciousUtils {

public static String get(String username, String password, String date)
throws IOException, HttpException, InterruptedException,
URISyntaxException {

DefaultHttpClient httpclient = new DefaultHttpClient();

httpclient.getCredentialsProvider().setCredentials(
new AuthScope("api.del.icio.us", 443),
new UsernamePasswordCredentials(username, password));

HttpGet httpget = new HttpGet(
"https://api.del.icio.us/v1/posts/get?dt=" + date);
HttpResponse response = httpclient.execute(httpget);

StatusLine statusLine = response.getStatusLine();

if (statusLine.getStatusCode() != 200) {
System.err.println(statusLine);
return null;
}

HttpEntity entity = response.getEntity();

return EntityUtils.toString(entity, "utf-8");
}

}

: