从iOS发布数据到PHP脚本

我正在尝试用户在字段(标题,desc,城市)中input数据后执行以下代码,然后单击保存。

- (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); } 

当我NSLog的clearPoststring(包含variables要发送到服务器的string),它显示:

 title=xmas&description=Celebration&city=NY 

在PHP端,我有如下简单:

 <?php $title = $_POST['title']; $description = $_POST['description']; $city = $_POST['city']; echo "Title: ". $title; echo "Description: ". $description; echo "City: ". $city; ?> 

只是试图获取有关PHP的数据,以便以后我可以操纵它。 现在当我执行

domain.com/ios/form.php,显示标题,描述和城市空白。

对不起,但我对iOS和Objective-C非常新。

目标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); 

迅速

 // 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) 

自IOS 9.0以来,NSURLConnection已经被废弃了。 请使用NSURLSesstion:

 -(void) httpPostWithCustomDelegate { NSURLSessionConfiguration *defaultConfigObject = [NSURLSessionConfiguration defaultSessionConfiguration]; NSURLSession *defaultSession = [NSURLSession sessionWithConfiguration: defaultConfigObject delegate: nil delegateQueue: [NSOperationQueue mainQueue]]; NSURL * url = [NSURL URLWithString:@"http://hayageek.com/examples/jquery/ajax-post/ajax-post.php"]; NSMutableURLRequest * urlRequest = [NSMutableURLRequest requestWithURL:url]; NSString * params =@"name=Ravi&loc=India&age=31&submit=true"; [urlRequest setHTTPMethod:@"POST"]; [urlRequest setHTTPBody:[params dataUsingEncoding:NSUTF8StringEncoding]]; NSURLSessionDataTask * dataTask =[defaultSession dataTaskWithRequest:urlRequest completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { NSLog(@"Response:%@ %@\n", response, error); if(error == nil) { NSString * text = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding]; NSLog(@"Data = %@",text); } }]; [dataTask resume]; } 

参考

请试试这个:

 [request setValue:[NSString stringWithFormat:@"%d",[clearPost length]] forHTTPHeaderField:@"Content-Length"]; 

好的,我正在添加我的请求代码:这可能会有所帮助

  NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"http://www.sth.com/action/verify.php"]]; [request setHTTPMethod:@"POST"]; [request setValue:[NSString stringWithFormat:@"%i",[sent length]] forHTTPHeaderField:@"Content-length"]; [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; [request setHTTPBody:[sent dataUsingEncoding:NSASCIIStringEncoding]];