post data to PHP script from iOS
ios, objective-c
Solution
Objective C
// Create your request string with parameter name as defined in PHP file
NSString *myRequestString = [NSString stringWithFormat:@"title=%@&description=%@&city=%@",eventTitle.text,eventDescription.text,eventCity.text];
// Create Data from request
NSData *myRequestData = [NSData dataWithBytes: [myRequestString UTF8String] length: [myRequestString length]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL: [NSURL URLWithString: @"http://www.youardomain.com/phpfilename.php"]];
// set Request Type
[request setHTTPMethod: @"POST"];
// Set content-type
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"content-type"];
// Set Request Body
[request setHTTPBody: myRequestData];
// Now send a request and get Response
NSData *returnData = [NSURLConnection sendSynchronousRequest: request returningResponse: nil error: nil];
// Log Response
NSString *response = [[NSString alloc] initWithBytes:[returnData bytes] length:[returnData length] encoding:NSUTF8StringEncoding];
NSLog(@"%@",response);
Swift
// Create your request string with parameter name as defined in PHP file
var myRequestString: String = "title=\(eventTitle.text!)&description=\(eventDescription.text!)&city=\(eventCity.text!)"
// Create Data from request
var myRequestData: NSData = NSData.dataWithBytes(myRequestString.UTF8String(), length: myRequestString.characters.count)
var request: NSMutableURLRequest = NSMutableURLRequest(URL: NSURL(string: "http://www.youardomain.com/phpfilename.php")!)
// set Request Type
request.HTTPMethod = "POST"
// Set content-type
request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "content-type")
// Set Request Body
request.HTTPBody = myRequestData
// Now send a request and get Response
var returnData: NSData = NSURLConnection.sendSynchronousRequest(request, returningResponse: nil, error: nil)
// Log Response
var response: String = String(bytes: returnData.bytes(), length: returnData.characters.count, encoding: NSUTF8StringEncoding)
NSLog("%@", response)
Problem
I am trying the following code that executes after user enter data in fields (title, desc, city) and then clicks save. ``` - (IBAction)saveDataAction:(id)sender { NSString *lEventTitle = [NSString stringWithFormat:@"var=%@",eventTitle.text]; NSString *lEventDesc = [NSString stringWithFormat:@"var=%@",eventDescription.text]; NSString *lEventCity = [NSString stringWithFormat:@"var=%@",eventCity.text]; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://mydomain.com/ios/form.php"]]; [request setHTTPMethod:@"POST"]; [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"content-type"]; //this is hard coded based on your suggested values, obviously you'd probably need to make this more dynamic based on your application's specific data to send NSString *postString = [[NSString alloc] initWithFormat:@"title=%@&description=%@&city=%@", lEventTitle, lEventDesc, lEventCity]; NSString *clearPost = [postString stringByReplacingOccurrencesOfString:@"var=" withString:@""]; NSLog(@"%@", clearPost); [request setHTTPBody:[clearPost dataUsingEncoding:NSUTF8StringEncoding]]; [request setValue:clearPost forHTTPHeaderField:@"Content-Length"]; [NSURLConnection connectionWithRequest:request delegate:self]; NSLog(@"%@", request); } ``` When I NSLog the clearPost string (string containing the variables to be sent to server), it shows: ``` title=xmas&description=Celebration&city=NY ``` on the PHP end, I have simple as: ``` <?php $title = $_POST['title']; $description = $_POST['description']; $city = $_POST['city']; echo "Title: ". $title; echo "Description: ". $description; echo "City: ". $city; ?> ``` Just trying to get data on PHP so that later I can manipulate it. Right now when I execute the domain.com/ios/form.php, it shows the title, description and city empty. Sorry but I am very new to iOS and Objective-C.