从iOS应用程序发送到PHP脚本不工作…简单的解决scheme是likey
我已经做了几次之前,但由于某种原因,我不能得到的职位去通过…我尝试的PHP脚本的variables设置为_POST,没有…当他们没有设置发布它的作品精细。 这是我的iOS代码:
NSDate *workingTill = timePicker.date; NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"HH:mm"]; NSString *time = [formatter stringFromDate:workingTill]; NSString *post = [NSString stringWithFormat:@"shift=%@&username=%@", time, usernameString]; NSData *postData = [post dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:NO]; NSString *postLength = [NSString stringWithFormat:@"%d", [post length]]; NSURL *url = [NSURL URLWithString:@"http://wowow.php"]; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0]; [request setHTTPMethod:@"POST"]; NSLog(@"%@", post); [request setValue:postLength forHTTPHeaderField:@"Content-Length"]; [request setHTTPBody:postData]; [NSURLConnection connectionWithRequest:request delegate:nil]; [self.navigationController popToRootViewControllerAnimated:YES];
这里是一大块的PHP,是不是在正确的位置POSTvariables?
<?php function objectsIntoArray($arrObjData, $arrSkipIndices = array()) { $arrData = array(); // if input is object, convert into array if (is_object($arrObjData)) { $arrObjData = get_object_vars($arrObjData); } if (is_array($arrObjData)) { foreach ($arrObjData as $index => $value) { if (is_object($value) || is_array($value)) { $value = objectsIntoArray($value, $arrSkipIndices); // recursive call } if (in_array($index, $arrSkipIndices)) { continue; } $arrData[$index] = $value; } } return $arrData; } $newShift = $_POST('shift'); $bartenderUsername = $_POST('username'); mysql_connect("host", "name", "pw") or die(mysql_error()); mysql_select_db("harring4") or die(mysql_error()); $result = mysql_query("SELECT * FROM BartenderTable WHERE username='".$bartenderUsername."'") or die(mysql_error()); $row = mysql_fetch_array($result); $newfname = $row['fname'];
我想这是一个相对简单的答案更多的经验开发人员,感谢您的帮助!
$_POST
是一个数组,而不是一个函数。 你需要方括号来访问数组索引:
$newShift = $_POST['shift']; $bartenderUsername = $_POST['username'];
使用下面的代码。 确保poststring的收据是一个关键,并将在服务器中使用。 客户端代码
NSString *receipt1 = @"username"; NSString *post =[NSString stringWithFormat:@"receipt=%@",receipt1]; NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES]; NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]]; NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease]; [request setURL:[NSURL URLWithString:@"http://localhost:8888/validateaction.php"]]; [request setHTTPMethod:@"POST"]; [request setValue:postLength forHTTPHeaderField:@"Content-Length"]; [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; [request setHTTPBody:postData]; NSHTTPURLResponse* urlResponse = nil; NSError *error = [[NSError alloc] init]; NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:&error]; NSString *result = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]; NSLog(@"Response Code: %d", [urlResponse statusCode]); if ([urlResponse statusCode] >= 200 && [urlResponse statusCode] < 300) { NSLog(@"Response: %@", result); } }
服务器端的PHP脚本。
validation.php
<?php if(_POST) { if($_POST['receipt'] == 'username') { echo "post successfull"; $receipt = $_POST['key1']; echo $receipt; } else { echo "not post"; } ?>
因为我是iPhone开发人员,所以我可以说你的Objective-C代码是正确的。 还要确保你发送的数据不是空的
NSLog(@"%d,[postData length]");
它不应该打印0
- 尝试使用RestKit创buildPOST请求并将响应映射到Core Data
- 如何有效地设置HTTP身体请求?
- 我如何确定iOS应用程序的HTTP请求的用户代理?
- 由于iOS 10中的nonce-count错误,HTTP摘要authentication失败
- 如何让NSURLSession从服务器返回Content-Length(http头)。 Objective-c,ios
- 通过HTTP POST发送大文件的正确方式是什么,而不是将整个文件加载到内存中?
- 如何caching由WKWebView加载的资源?
- ASIHTTPRequestErrorDomain代码1
- 如何使用AFNetworking为“PUT”请求设置数据?