views:

424

answers:

1

I would like to perform rest calls to Amazon API from Android. Amazon demands that all ws calls will be authenticated using HMAC signatures (Hash-based Message Authentication Code). I'm missing a similar object to Apache Base64 object to sign my request. Is there a simple way to do that in Android, or even better is there an Android client for Amazon web service (Product Advertising API).

+1  A: 

You should be able to just include the Apache Base64 package in your project.

See this: http://www.delaytolerant.com/android-http-managing-base64-with-apache-commons-codec/

Or if there are any Java based Amazon clients, have you tried including those jars in your Android project?

Apparently the link above is now dead. Here's the contents of the page from Google's cache:

This post continues on programming HTTP within Android. In the following, I’ll show how to manage Base64 coded content in Android and how to render an image on WebView from a String that we encoded.

First, the tool to use is commons codec package from Apache. The documentation can be found here. The source is available here. You can just include the source of the package to your project, it is all Android compatible.

The commons codec package has also convenient method for Base64 decoding,

String imageString = "";
try {
  FileInputStream fin = openFileInput("camera.jpg");
  int jpeg_size = fin.available();
  byte[] imagedata = new byte[jpeg_size];
  fin.read(imagedata);
  byte[] encodedData = Base64.encodeBase64(imagedata);
  imageString = new String(encodedData);
  final String mimetype = "text/html";
  final String encoding = "UTF-8";
  // replace below [ with html "<" and ] similarly ] with ">"
  String html = "[html][body][center][img height=\"200\" width=\"200\"
         src=\"data:image/jpeg;base64,"+imageString+"\"/][/center][/body][/html]";
  mWebView.loadData(html, mimetype, encoding);
} catch (Exception e) {
  e.printStackTrace();
}

There is also convenient Base64 decoding functionality in the package, which can be used for example, to decode Base64 encoded content in MIME messages, which were covered in previous post.

mbaird
that link is dead.
stealthcopter