WebでAPIを用意してPOSTリクエストし、結果を取得する方法。 基本的にNSMutableURLRequestを利用するが、同期・非同期によってコーディングや構造が異なってくる。 取りあえず処理しやすい同期で実装してみる。
・API URL:http://hoge.com/user_login/ ※APIのプログラムは省略 ・POSTデータ:id、passwd ・API出力データ:JSON
[cpp] NSString *urlString = [self userLoginURI:loginId :password]; NSString *postString = [NSString stringWithFormat:@"id=%@&passwd=%@", loginId, password]; NSData *post = [postString dataUsingEncoding:NSUTF8StringEncoding];
NSURL* url = @"http://hoge.com/user_login/";
NSMutableURLRequest* urlRequest = [[NSMutableURLRequest alloc]initWithURL:url];
[urlRequest setHTTPMethod:@"POST"];
[urlRequest setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"content-type"];
[urlRequest setHTTPBody:post];
NSURLResponse* response;
NSError* error = nil;
NSData* result = [NSURLConnection sendSynchronousRequest:urlRequest
returningResponse:&response
error:&error];
NSString* resultString = [[NSString alloc] initWithData:result encoding:NSUTF8StringEncoding];
NSLog(@"%@", resultString);
if (result != nil) {
NSDictionary *results = [NSDictionary alloc];
results = [[resultString JSONValue] retain];
[user bind:results];
NSLog(@"%@", results);
}
同期処理と言う事で、sendSynchronousRequest:urlRequestメソッドを利用する。