..MindWrite..

Posts Tagged ‘del.icio.us’

Managing delicious(del.icio.us) bookmarks from BlackBerry Java application

Posted by guptaradhesh on October 14, 2010

Managing delicious(del.icio.us) bookmarks from BlackBerry Java application

With an aim to fetch (manage) the bookmarks in a del.icio.us account to the blackberry device, I searched for java api’s I can get from delicious.

Being able to easily get the java api’s delicious jars (http://sourceforge.net/projects/delicious-java/), i tried using the methods available for managing bookmarks. Got stuck somewhere-

the del.icio.us api’s use java.util.List internally in most of the methods. BlackBerry Api’s doesn’t provide with this java.util.List classes etc. Trying to add java.unit.List jar was a big overhead – moreover the jar I found was of around 20MB+.

As an alternate to it – I tried with using web api’s provided by delicious (http://delicious.com/help/api) . Sending concerned request url would fetch/manage according bookmarks.

Another hitch which I encountered for the same was to send login credentials. I tried sending the request in the form e.g. https://username:password@api.del.icio.us/v1/posts/all – (this url works with firefox but throws error with IE – don’t know way??), but it gives MALFormedUrl Exception.

I found that there is some standard way(not sure whether standard or not) to send login credentials for http-requests. One needs to make Byte64 encoded byte string of “username:password” and attach it as authorization property to the http request.

Being unable to find apache’s commom-codec-3.jar, the Base64 didn’t work. Thankfully, BB Api’s provide with Base64.

The code snippet for fetching most recent bookmarks from a delicious account is as:

String url = "https://api.del.icio.us/v1/posts/recent?";
String loginString = "pensivemode:Aditi01*";
try {
authString = Base64OutputStream.encodeAsString(loginString.getBytes(), 0, loginString.length(), false, false);
}
catch (IOException e) {
Status.show("problem with base64");
e.printStackTrace();
}
connection = (HttpConnection) Connector.open(url);
connection.setRequestProperty("Authorization", "Basic " + authString);
 InputStream inpStream = connection.openInputStream();
parseStringXML(inpStream);

The delicious api returns an XML, which can be parsed using DOM or SAX, as per the data required.

Posted in java | Tagged: , , , | Leave a Comment »