やってみた。英語は気合い。初心者上等。
間違ってたらご指摘ください。
iOSアプリを作りはじめて自前のwebサーバとの連携の検証のため、
とりあえず認証をためしてみたかった。
参考リンク
http://dev.classmethod.jp/references/ios-nsurlsession-1/
http://blog.techfirm.co.jp/2013/11/25/ios-7-nsurlsession%E3%81%A7%E3%83%90%E3%83%83%E3%82%AF%E3%82%B0%E3%83%A9%E3%82%A6%E3%83%B3%E3%83%89%E9%80%9A%E4%BF%A1%E3%82%92%E3%81%99%E3%82%8B/
めも
AFNetworkingではなくNSURLSessionを使ってみた。
// セッション種類
NSURLSessionConfiguration *defaultConfigObject = [NSURLSessionConfiguration defaultSessionConfiguration];
// セッション作成
NSURLSession *urlSession = [NSURLSession sessionWithConfiguration: defaultConfigObject delegate: nil delegateQueue: [NSOperationQueue mainQueue]];
//cookieのプロパティ設定
NSMutableDictionary *properties =
[NSMutableDictionary dictionaryWithObjectsAndKeys:
@"http://www.hoge.com", NSHTTPCookieOriginURL,
@"key", NSHTTPCookieName,
@"value", NSHTTPCookieValue,
nil
];
//cookie作成
NSHTTPCookie cookie = [NSHTTPCookie cookieWithProperties:properties];
NSArray cookies = [NSArray arrayWithObject:cookie];
NSDictionary * headers = [NSHTTPCookie requestHeaderFieldsWithCookies:cookies];
//リクエスト作成
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://www.hoge.com/"]];
[request setHTTPMethod:@"GET"];
[request setAllHTTPHeaderFields:headers];
// データタスクを実行します
[[urlSession dataTaskWithRequest:(NSURLRequest ) request
completionHandler:^(NSData data, NSURLResponse response,NSError error)
{
NSLog(@"Got response %@ with error %@.\n", response, error);
NSLog(@"DATA:\n%@\nEND DATA\n",[[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding]);
}] resume];
なんどやってもcookieWithPropertiesがnilになってしまう。
ググった結果次の書き方じゃないといけない事が判明。
NSMutableDictionary *properties =
[NSMutableDictionarydictionaryWithObjectsAndKeys:
@"www.hoge.com",NSHTTPCookieDomain,
@"\\", NSHTTPCookiePath, // IMPORTANT!
@"key", NSHTTPCookieName,
@"value", NSHTTPCookieValue,
nil
];
あーはまった。
まぁ公式ドキュメントをよく見るとDiscussionのところに書いてあるんですね。
読み飛ばしよくなかった。でもDiscussionってなんだ??