How do I make HTTP post request for getting JSON object in response for iPhone application? How do I make HTTP post request for getting JSON object in response for iPhone application? json json

How do I make HTTP post request for getting JSON object in response for iPhone application?


This is the code which work for JSON post request,TouchJSON Framework is used for parsing the JSON, thanks 'schwa'.

NSArray *keys = [NSArray arrayWithObjects:@"username", @"password", @"preference", @"uid", nil];NSArray *objects = [NSArray arrayWithObjects:@"accuser", @"accpass", @"abc_region", @"100", nil];NSDictionary *theRequestDictionary = [NSDictionary dictionaryWithObjects:objects forKeys:keys];NSURL *theURL = [NSURL URLWithString:@"http://url.com/request.php"];NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:theURL cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:10.0f];[theRequest setHTTPMethod:@"POST"];[theRequest setValue:@"application/json-rpc" forHTTPHeaderField:@"Content-Type"];NSString *theBodyString = [[CJSONSerializer serializer] serializeDictionary:theRequestDictionary];NSLog(@"%@", theBodyString);NSData *theBodyData = [theBodyString dataUsingEncoding:NSUTF8StringEncoding];// NSLog(@"%@", theBodyData);[theRequest setHTTPBody:theBodyData];NSURLResponse *theResponse = NULL;NSError *theError = NULL;NSData *theResponseData = [NSURLConnection sendSynchronousRequest:theRequest returningResponse:&theResponse error:&theError];NSString *theResponseString = [[[NSString alloc] initWithData:theResponseData encoding:NSUTF8StringEncoding] autorelease];NSLog(theResponseString);NSDictionary *theResponseDictionary = [[CJSONDeserializer deserializer] deserialize:theResponseString];NSLog(@"%@", theResponseDictionary);NSString *theGreeting = [theResponseDictionary objectForKey:@"greeting"];[self setValue:theGreeting forKey:@"greeting"];


Not really sure what your question is exactly. But google "TouchJSON" that should help you get started.


Sorry for errors and memory leaks, but how about something like:

CFURLRef url = CFURLCreateWithString(NULL, CFSTR("http://example.com/post"), NULL);CFHTTPMessageRef msg = CFHTTPMessageCreateRequest(    NULL,    CFSTR("POST"),    url,    kCFHTTPVersion1_1);const char *body = "key=value&id=30293";CFDataRef bodyData = CFDataCreate(NULL, body, strlen(body));CFHTTPMessageSetBody(msg, bodyData);CFReadStreamRef myReadStream = CFReadStreamCreateForHTTPRequest(NULL, myRequest);CFReadStreamOpen(myReadStream);CFHTTPMessageRef myResponse = CFReadStreamCopyProperty(    myReadStream,    kCFStreamPropertyHTTPResponseHeader);//// Handle myResponse//CFReadStreamClose(myReadStream);CFRelease(myReadStream);CFRelease(bodyData);CFRelease(msg);CFRelease(url);