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です。