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