[Android] Android からbit.ly短縮URLサービスを使ってみた

| トラックバック(0) |

短縮URLサービス bit.ly が REST API をサポートしていたので、

ソースコードを書いて Android から使ってみました。

bitly.png

 

準備

bit.ly のREST API を使用するには API Key 発行用のアカウントが必要なため、

以下のリンク先からアカウントを作成(Sign up)してください。

http://bit.ly/account/register?rd=/

 

API 解説

bit.ly の REST API ドキュメントは、以下のリンク先にあります。

http://code.google.com/p/bitly-api/wiki/ApiDocumentation

 

サポートされている API は、以下の 5 種類であり、

HTTP GET リクエストを発行すると、JSON(デフォルト)、または、XML の結果を返してくれます。

  • shorten(短縮)
  • expand(展開)
  • info(情報取得)
  • stats(参照情報取得)
  • errors(エラーコード取得)

 

サンプルソースコード

以下、shorten(短縮)を使用するサンプルソースコードです。

紙面の都合上、ハードコード文字列、エラーチェックなしとなっています。

ここでは、bit.ly のサンプルソースとして紹介していますが、

殆どの REST API はこのような流れで実装できるので、REST のサンプルとしてお使い下さい^^;

 

String shortUrl = ""; // 結果格納用文字列

String longUrl = "http://www.google.co.jp/search?q=みっくみく"; // ここに短縮したいURLを記述する
String login = "adakodaXXXXXXXXXX"; // ここにbit.lyアカウントを記述する
String apiKey = "R_81b567b1537c41e4783ff5XXXXXXXXXX"; // ここにapiKeyアカウントを記述する

// HTTP GET リクエスト文字列作成
Uri.Builder uriBuilder = new Uri.Builder();
uriBuilder.path("http://api.bit.ly/shorten");
uriBuilder.appendQueryParameter("version", "2.0.1");
uriBuilder.appendQueryParameter("longUrl", Uri.encode(longUrl));
uriBuilder.appendQueryParameter("login", login);
uriBuilder.appendQueryParameter("apiKey", apiKey);
String uri = Uri.decode(uriBuilder.build().toString());

try {
    // HTTP GET リクエスト
    HttpUriRequest httpGet = new HttpGet(uri);
    DefaultHttpClient defaultHttpClient = new DefaultHttpClient();
    HttpResponse httpResponse = defaultHttpClient.execute(httpGet);
    if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
        // HTTP レスポンス
        String entity = EntityUtils.toString(httpResponse.getEntity());
        // JSON デコード
        JSONObject jsonEntity = new JSONObject(entity);
        if (jsonEntity != null) {
            JSONObject jsonResults = jsonEntity.optJSONObject("results");
            if (jsonResults != null) {
                JSONObject jsonResult = jsonResults.optJSONObject(longUrl);
                if (jsonResult != null) {
                    // 結果の代入
                    shortUrl = jsonResult.optString("shortUrl");
                    Log.v("shortUrl", shortUrl); // http://bit.ly/5uavMY
                }
            }
        }
    }
} catch (IOException e) {
} catch (JSONException e) {
}

トラックバック(0)

トラックバックURL: http://mt.adakoda.com/mt-tb.cgi/390

Android Advent Calendar 2011

2012年2月

      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29