itok's Lab

昔の開発ネタを記録として残してます

iPhotoプラグインを作る「フォト蔵編」-4 : NSURLRequest -1 : Basic認証

ちょっとの間、フォト蔵、というよりCocoaによる通信のお話。

CocoaでHTTP等の通信を行う場合、NSURLRequestを使うのが一般的でしょう。ここでは、NSURLRequestの一般的な使い方、というより、ちょっとだけ突っ込んだところを見てみます。

で、Basic認証です。Basic認証についての概要は毎度おなじみWikipediaにたよるとして、要するに、username:passwordの組み合わせをBase64エンコードして、HTTPヘッダにのっける(Authorization: Basic xxxxxx)ということです。やることは二つですね。順番に見ていきましょう。

Base64エンコード

これは、ネットで公開されているサンプルソースをお借りすることにしましょう。(感謝感謝>グースさん)

NSDataのカテゴリとして実装されているので、非常に便利な感じです。ここではNSDataをNSStringとして出力する形となっていますので、そのまま使うとすれば、こういうふうになります。

NSData* data = [[NSString stringWithFormat:@"%@:%@", username, password]
    dataUsingEncoding:NSASCIIStringEncoding];
NSString* base64Str = [data stringEncodedWithBase64];

簡単ですね。

HTTPヘッダへの追加

NSURLRequestのインスタンスにヘッダ情報を追加するわけですが、NSURLRequestはimmutableなのでNSMutableURLRequestを使用します。

// NSMutableURLRequest
-(void) setValue:(NSString*)value forHTTPHeaderField:(NSString*)field;

前述のからの流れとしてはこういう感じになります。

NSMutableURLRequest* req = [NSMutableURLRequest requestWithURL:url];
[req setValue:[NSString stringWithFormat:@"Basic %@", base64Str]
    forHTTPHeaderField:@"Authorization"];

で、このreqを用いて、POSTなりGETをしてあげればOKです。