因此,我浏览了无数类似的问题,但没有一个回答我正在寻找的内容或以完整的方式回答它,所以希望大家能帮助我。
我需要使用 POST 将一系列餐厅 ID 从 iOS 传递到 PHP 文件,或者无论如何都可以正常工作。我知道 ASIHTTPRequest 但我正在寻找内置的东西,它已被开发人员放弃。最后,我不想通过 URL 传递它们,因为我不知道会有多少条目。
所以这就是我到目前为止所得到的。
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:theURL]];
[request setHTTPMethod:@"POST"];
NSMutableDictionary *jsonDict = [[NSMutableDictionary alloc] init];
[jsonDict setValue:restaurants forKey:@"restIDs"];
NSLog(@"JSON Dict: %@",jsonDict);//Checking my array here
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:jsonDict options:kNilOptions error:nil];
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
NSLog(@"JSON String: %@",jsonString); //Checking my jsonString here...
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setValue:@"json" forHTTPHeaderField:@"Data-Type"];
[request setValue:[NSString stringWithFormat:@"%d", [jsonData length]] forHTTPHeaderField:@"Content-Length"];
[request setHTTPBody: jsonData];
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSLog(@"Return DATA contains: %@", [NSJSONSerialization JSONObjectWithData:returnData options:NSJSONReadingMutableContainers error:nil]);
NSArray *restMenuCount = [NSJSONSerialization JSONObjectWithData:returnData options:NSJSONReadingMutableContainers error:nil];
因此,从这一端开始,我检查了一切,一切看起来都很好,但从 PHP 端它甚至没有捡起它。
这是我的 PHP 文件的样子:
$restIDs = $_POST['restIDs'];
echo $restIDs; //Checking to see if it even has anything......but nothing there
for ($i = 0; $i < $restIDs.count; $i++) {
$query = "SELECT * FROM `MenuItems` WHERE rest_id = '$restID'";
$result = mysqli_query($connect, $query);
$number = mysqli_num_rows($result);
$menuNumber[$i] = $number;
}
echo json_encode($menuNumber);
所以最后,我做错了什么?为什么我的 PHP 端没有收到任何东西。最重要的是,有人可以向我解释如何通过 POST 发送数组。因为我觉得这是我真正的问题,所以我对它的理解不足以自己解决问题。我不明白您如何将所有内容从 iOS 端放入并在 PHP 端提取。
我希望所有这些都足够清楚,在此先感谢。
编辑:
我尝试通过 URL 将数组作为字符串传递,然后将其分解,幸运的是它起作用了......但我只是在 URL 限制之下,所以我仍然想找出另一个解决方案。至少,现在我知道我的其余代码按预期工作。