以前に「bit.lyのREST APIを使って短縮URLを作成する方法 - Tomute’s Notes」という記事でiPhoneアプリ等で短縮URLを作成する方法を紹介したが、今回はbit.lyではなくtr.imという別のURL短縮サービスを使う方法を記載する。
tr.imのAPIの特徴としてはAPIキーが不要*1という事と、URLの短縮専用のシンプルな簡易インタフェースが用意されているという点である。また生成される短縮URLもbit.lyに比べて若干短い。
以下にこの簡易インタフェースを利用した方法を記載する(事前に特別な設定は不要)。
bit.lyと比べても非常に簡単に短縮URLを取得する事が可能である。
NSString *longURL = @"http://d.hatena.ne.jp/tomute/"; NSString *urlString = [NSString stringWithFormat:@"http://api.tr.im/v1/trim_simple?url=%@",longURL]; NSURL *url = [NSURL URLWithString:urlString]; NSString *shortURL = [NSString stringWithContentsOfURL:url encoding:NSASCIIStringEncoding error:nil]; NSLog(@"%@", shortURL);
上記方法の欠点としてはAPIの使用制限を超える等のエラーが発生した場合、そのエラー原因を知ることが出来ないという点である。
そこで、エラー原因を知りたい場合には、簡易インタフェースの代わりに以下のように通常のインタフェースを利用すれば良い。
(以下の例では、結果をJSON形式でもらうよう指定しているので、結果の解析にJSON Frameworkを使用している*2)
NSString *longURL = @"http://d.hatena.ne.jp/tomute/"; NSString *urlString = [NSString stringWithFormat:@"http://api.tr.im/v1/trim_url.json?url=%@",longURL]; NSURL *url = [NSURL URLWithString:urlString]; NSString *results = [NSString stringWithContentsOfURL:url encoding:NSASCIIStringEncoding error:nil]; NSDictionary *dic = [results JSONValue]; if ([[[dic objectForKey:@"status"] objectForKey:@"code"] intValue] == 200) { NSString *shortURL = [dic objectForKey:@"url"]; NSLog(@"%@", shortURL); }
なお、tr.imが返すJSONは以下のような形である。
{"trimpath":"MVr7","reference":"XVtbqNjTLBcep4XPeaslHS6mOVNkZl","trimmed":"2010-02-05 01:39:43 -0800","destination":"http://d.hatena.ne.jp/tomute/","trim_path":"MVr7","domain":"hatena.ne.jp","url":"http://tr.im/MVr7","visits":0,"status":{"result":"OK","code":"200","message":"tr.im URL Added."},"date_time":"2010/02/05 01:39:43 -0800"}
最後におまけであるが、tr.imはbit.ly互換のインタフェースも用意しているので、bit.lyを用いた短縮URLの作成にエラーが発生した場合には、tr.imを代わりに利用するというような仕組みにする場合には、こちらを利用すると便利そうである。
関連記事