2011年7月27日水曜日

【メモ】JSON ArrayでPOST送信する方法(Objective-C)

Objective-C学習中の私は毎日壁にぶつかってばかり。。。

サーバーはJSONICを使ってJSONオンリーでデータの送受信してて、
下の様なデータをサーバーにPOST送信したい時

{
     "date" : "2011/07/27",
     "lang" : "Java",
     "flag" : "true",
     "newspaper" : [
              "朝日新聞",
              "毎日新聞",
              "読売新聞"
     ]
}

クライアントがJavaとかJavascriptだったらやり方が分かるんだけど、
Objective-Cではどうやれば良いのか分からなかったので
色々調べた。

なぜか日本語のサイトに当たらなくて
海外のサイトに答えがのってました。
本当に助かりました。

NSMutableArray *newspaper = [[NSMutableArray alloc] init];
if (isAsahi == YES) {
  [newspaper addObject:@"朝日新聞"];
}
if (isMainichi == YES) {
  [newspaper addObject:@"毎日新聞"];
}
if (isNikkei == YES) {
  [newspaper addObject:@"日経新聞"];
}
if (isYomiuri == YES) {
  [newspaper addObject:@"読売新聞"];
}
if (isSankei == YES) {
  [newspaper addObject:@"産經新聞"];
}

//送信するパラメータの組み立て
NSMutableDictionary *mutableDic = [NSMutableDictionary dictionary];
[mutableDic setValue:@"2011/07/27" forKey:@"date"];
[mutableDic setValue:@"Java" forKey:@"lang"];
[mutableDic setValue:@"true" forKey:@"flag"];
[mutableDic setValue:newspaper forKey:@"newspaper"];

//JSONに変換
NSString *jsonRequest = [mutableDic JSONRepresentation];

//JSONに変換
NSData *requestData = 
      [jsonRequest dataUsingEncoding:NSUTF8StringEncoding];
 
NSMutableURLRequest *request;
request = 
    [NSMutableURLRequest requestWithURL:[NSURL URLWithString:strUrl] 
    cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];

//HTTPメソッドは"POST"
[request setHTTPMethod:@"POST"];
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request setValue:@"application/json"
      forHTTPHeaderField:@"Content-Type"];
[request setValue:[NSString stringWithFormat:@"%d", 
      [requestData length]] forHTTPHeaderField:@"Content-Length"];
[request setHTTPBody: requestData];
 
//レスポンス
NSURLResponse *resp;
NSError *err;
 
//HTTPリクエスト送信
NSData *result = [NSURLConnection sendSynchronousRequest:request 
      returningResponse:&resp error:&err];

0 件のコメント:

コメントを投稿