del.icio.us API - httpclientを使ってみる その2
2008/04/27
del.icio.us
httpclient
java
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
使用しているライブラリは、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");
}
}
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");
}
}
: