サーバーは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 件のコメント:
コメントを投稿