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