因此,我浏览了无数类似的问题,但没有一个回答我正在寻找的问题或以完整的方式回答它,所以希望你们都能帮助我。
我需要使用 POST 或任何可以正常工作的方式将 RestaurantID 数组从 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 端获取。
我希望所有这些都足够清楚,预先感谢。
EDIT:
我尝试将数组作为字符串通过 URL 传递,然后将其分解,幸运的是它有效......但我刚刚低于 URL 限制,所以我仍然想找出另一个解决方案。至少,现在我知道我的其余代码正在按预期工作。