使用 POST 从 iOS 将数组传递给 PHP

2024-04-16

因此,我浏览了无数类似的问题,但没有一个回答我正在寻找的问题或以完整的方式回答它,所以希望你们都能帮助我。

我需要使用 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 限制,所以我仍然想找出另一个解决方案。至少,现在我知道我的其余代码正在按预期工作。


您似乎对如何$_POST变量已填充。将文档类型指定为 JSON 并将 JSON 字符串作为帖子正文放入将不会自动填充此数组。正文必须采用特定格式。通常,这意味着 url 编码对,例如a=1&b=2&c=2&d=%2fg+y等等。这在一定程度上限制了您可以发送的数据类型。特别是,如果您希望任意 JSON 对象自动显示在 $_POST 变量中,那么从这个意义上来说,任意 JSON 对象是不可能的。这里有几个选项:

选项一:而不是使用$_POST,直接使用柱体。使用fopen("php://input")并使用 PHP JSON 解析器解析它:

$input = file_get_contents("php://input");
$obj = json_decode($input,true);
$restIDs = $obj['restIDs'];

如果您选择了这条路线,则无需创建具有名为的字段的对象restIDs尽管。您可以简单地序列化数组并使用$obj as $restIDs

选项二,假设 RestID 中的对象只是字符串,而不是将数据作为 JSON 对象传递,而是按照 PHP 使用的方式格式化正文:

NSMutableString *bodyStr = [NSMutableString string];
for (NSString *restID in restaurants) {
    [bodyStr appendFormat:@"restIDs[]=%@&",[restID stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
}
NSData *body = [bodyStr dataUsingEncoding:NSUTF8StringEncoding];
[request setHTTPBody: body];

现在您应该能够使用它来访问它$_POST['restIDs']正如你所期望的那样。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 POST 从 iOS 将数组传递给 PHP 的相关文章

  • Swift:如何审查/过滤输入的脏话等文本?

    我只是想看看是否有一种既定的方法可以做到这一点 或者如何去做 我有一个文本字段 它本质上充当我的 iOs 应用程序中的表单 用户可以在其中发布内容 我不能让用户发布脏话 不恰当的废话 所以我想过滤掉他们输入的字符串包含这些单词之一的内容并显
  • 按照约定应返回哪些 REST PUT/POST/DELETE 调用?

    根据 REST 意识形态 PUT POST DELETE 请求的响应正文中应该包含什么 返回码呢 是HTTP OK enough 如果有的话 这种约定的原因是什么 我发现了一篇描述 POST PUT 差异的好文章 发布与放置 http ww
  • 从核心数据存储创建 .sqlite 文件?

    我在书籍和提供 sqlite 文件下载的网站上看到过教程 sqlite 文件用于核心数据 如何获取 sqlite 文件FROM应用程序或核心数据存储TO我的桌面 如果您要创建一个预填充的 sqlite 文件以与 Core Data 一起使用
  • fsockopen() 和 SSL 出错,“无法启用加密”

    我正在尝试连接到 Nominet EPP 测试台 但收到 无法启用加密 的消息 这似乎是一个罕见的错误 没有记录的解决方案或原因 用行 socket fsockopen ssl testbed epp nominet org uk 700
  • 需要一个正则表达式将 css 类添加到第一个和最后一个列表项

    更新 谢谢大家的意见 一些附加信息 它实际上只是我正在使用的一小部分标记 20 行 目的是利用正则表达式来完成工作 我还能够修改脚本 电子商务脚本 以在构建导航时插入类 我想限制我所采用的黑客数量 以便在更新到软件的最新版本时让事情变得更容
  • 更新查询增量字段加上 1 codeigniter 函数 [重复]

    这个问题在这里已经有答案了 我想在 codeigniter 项目中将字段值增加到当前值加 1 所以 我做了一个功能 但它不起作用 我的职能是 function increse field by 1 table name fieldToInc
  • 迁移大型 Core Data 数据库崩溃

    我有一个将产品存储在核心数据文件中的应用程序 这些产品包括作为 可转换 数据的图像 现在我尝试使用轻量级迁移添加一些属性 当我使用一个小型数据库对其进行测试时 它运行良好 但当我使用一个接近 500 MB 的大型数据库时 应用程序通常会因内
  • 如何安全地将 CGFloat 降低或提高到 int?

    我经常需要在地板或天花板上安装CGFloat to an int 用于计算数组索引 我永远看到的问题floorf theCGFloat or ceilf theCGFloat 是浮点不准确可能会带来麻烦 那如果我的CGFloat is 2
  • Symfony 5.4 Security Bundle,注册后无法登录

    我在 5 4 版本上构建空的新项目 我使用这些命令来构建项目 composer create project symfony skeleton 5 4 testapp54 cd testapp54 composer require weba
  • 如何在 Swift 编程中获得基于导航的模板功能

    我的项目需要一个导航控制器 并且我的应用程序最初有一个社交登录 一旦验证通过 用户将被推送到另一个视图 我在其中显示一个具有 2 个选项卡的选项卡控制器 我不知道如何在 Swift 编程中做到这一点 我已将视图控制器嵌入到导航控制器中 一旦
  • 如何在ios上定义可达性超时

    我使用 Reachability 类来了解我是否有可用的互联网连接 问题是当wifi可用但不能上网时 NetworkStatus currentReachabilityStatus方法花费太多时间 my code Reachability
  • 在 foreach 循环中使用函数会缓存结果,还是每次都调用该函数?

    在下面的代码中 function a echo a return array 1 2 3 4 foreach a as t echo t 我们可以看到 a 仅被调用一次 并且返回值似乎被缓存了 但后来我看到这场辩论 参见对该问题的评论 ht
  • xCode 7.1 中警报的 UITesting

    我正在 xCode 7 1 中编写 UITests 并且在测试警报时遇到问题 在我的情况下允许通知 创建测试时 xCode 会写入以下代码 app alerts U201cAppName U201d Would Like to Send Y
  • 正则表达式:如何表达没有下划线的 \w

    有没有简洁的表达方式 w but without 即 w 中包含的所有字符 除了 我问这个是因为我正在寻找最简洁的方式来表达域名验证 域名可以包含小写和大写字母 数字 句号和破折号 但不能包含下划线 w 包括以上所有内容 加上下划线 那么
  • 使标签充当输入按钮

    我怎样才能做一个 a href http test com tag test Test a 就像表单按钮一样 通过充当表单按钮 我的意思是 当单击链接执行操作时method get 或 post 以便能够通过 get 或 post 捕获它
  • 如何从 php 中的 .doc 文件获取页面数,以下代码适用于 .docx 而不是 .doc

    此代码工作 docx 格式文档 但我需要 doc 格式文档计数 php 中的页数 function CountPagesDocx filename zip new ZipArchive if zip gt open filename tru
  • 如何将图像放在 UIButton 中文本的右侧?

    如果可以避免的话 我不想使用子视图 我想要一个UIButton其中包含背景图像 文本和图像 现在 当我这样做时 图像位于文本的左侧 背景图像 文本和图像都有不同的高亮状态 最简单的解决方案 iOS 10 及更高版本 Swift button
  • 使用 twitterkit 将图像发布到 Twitter

    我正在尝试使用 Twitter 的新 TwitterKit 和自定义 UI 发布图像和推文 他们提供的唯一文档是如何用他们的观点来做这件事 所以我可以弄清楚如何在没有图像的情况下做到这一点 NSMutableDictionary messa
  • iOS Swift 中断键盘事件

    我在拦截键盘事件时遇到问题 我已将我的 iOS 与 SteelSeries Free 游戏手柄控制器 连接 当连接到 iOS 时 它将被检测为蓝牙键盘 这是在我打开Notes时测试的 按下游戏手柄上的任何按钮都会写一个字母 我需要拦截此按钮
  • cocos2d 2.0-rc2:结束director并重新启动

    我有一款由 cocos2d 驱动的游戏 它使用 UIKit 菜单 所以我只使用一个视图控制器的框架 即游戏本身 而且 它只有一个场景 从cocos2d 2 0开始 director本身就是一个UIViewController子类 所以我只是

随机推荐

  • 大写和 NoClassDefFoundError 与 ClassNotFoundException

    我发现不同平台上 Class forName 何时抛出 ClassNotFoundException 以及何时抛出 NoClassDefFoundError 存在差异 这种行为是否在某处明确定义 或者我偶然发现了一个错误 考虑以下代码 它是
  • spring-data-jpa 不从 oracle.jdbc.driver.forwardonlyreswultset 进行转换

    我正在连接到 oracle 数据库 我刚刚解决了依赖问题 在以下网址中有所需的代码 如存储库 实体等 spring data jpa 1 11 16 带游标的存储过程 https stackoverflow com questions 53
  • 使用不同数据集的 UNION ORDER BY (T-SQL)

    我有一个疑问UNION的两个有点相似的数据集 但它们都有一些在另一个数据集中不存在的列 即 这些列在结果中具有 NULL 值 UNION 问题是 我需要ORDER使用仅存在于一个或另一组中的那些列来生成结果数据 以便以软件端友好的格式获取数
  • GAE 数据存储游标是否永久且持久?

    这么说是否正确com google appengine api datastore Cursor只是将索引位置存储到 GAE 数据存储索引中 游标耐用吗 也就是说 我可以永久存储游标并一次又一次地重复使用它 并确定如果它指向索引中的第 50
  • 是否可以为 Azure 辅助角色设置机器密钥

    我在 Azure 辅助角色中托管了一个 Owin WebAPI 服务器 Owin Authentication中间件似乎使用MachineKey来加密和生成Token 当我只有一个该角色的实例时 这非常有效 但是一旦我想使用多个实例 每个实
  • HTML5 替代基于闪存的 ZeroClipboard 来安全地将数据复制到剪贴板?

    随着 Flash 在许多环境 iPhone Android IE10 等 中逐渐淘汰 是否有任何浏览器即将推出新的解决方案 允许在不安装 Flash 的情况下将信息安全复制到剪贴板 我一直在使用零剪贴板 https github com j
  • TextRenderInfo 在 iTextSharp 中如何工作?

    我从网上得到了一些代码 他们为我提供了字体大小 我不明白 TextRenderInfo 如何读取文本 我尝试使用 renderInfo GetText 它给出随机数量的字符 有时是 3 个字符 有时是 2 个字符或更多或更少 我需要知道 r
  • 对 .NET Core 中的 web.config 感到困惑

    关于 web config 和 NET Core 有很多相互矛盾的说法 Places saying it s gone https dotnetcore show episode 10 configuration in net core h
  • 从另一个 Activity 返回时 SearchView 获得焦点并打开键盘

    当我从另一个活动返回主活动时 searchView 获得焦点并且键盘打开 我设法使用以下方法阻止键盘打开 getWindow setSoftInputMode WindowManager LayoutParams SOFT INPUT ST
  • Pandas group-by 累加和的比例从0开始

    我有以下 pandas 数据框 没有最后 2 列 name day show in appointment previous missed appointments proportion previous missed 0 Jack 202
  • 从父级 React 刷新子级状态

    我有一个包含一些数据的表 表中的每个元素都是一个 React 类组件 它看起来像这样 我想要的只是有一个用于 检查所有 功能的复选框 左上角复选框 问题是我不知道如何解决这个问题 因为props and state 我在单元素组件中有类似的
  • 如何向变量添加条件 - GAMS

    在我尝试构建的模型中 我有一个变量定义为 Variables x i j number of motors produced in month i to be delivered in month j 在该变量中 j 必须始终等于或大于 i
  • 无法读取更新的 AnyLogic DB 值

    我目前正在使用 AnyLogic 数据库来存储已用停车容量 我编写了一个函数来读取数据库并为每个存储的集装箱或拖车分配一个 id 然后 使用 UPDATE 查询来更新数组 数据库读取是使用数据库查询工具指定的 selectfrom 执行的
  • 如何将类添加到开槽元素?

    In my my dropdown模板中的组件 我有这个
  • Rails 中的奇怪错误 - 缺少助手

    我不确定 但这可能与崩溃的计算机有关 重新启动后 崩溃后 我收到丢失助手错误 其中助手名称错误 切换分支对结果没有影响 错误是 缺少帮助程序文件 helpers users xxxx sites xxxx app helpers accou
  • 如何在关闭 rowselect 的情况下为 DBGrid 中的整行着色?

    RowSelect 破坏了 OnCellClick 的功能 因此我需要关闭 RowSelect 那么如何通过突出显示当前行的所有单元格来模拟行选择的外观呢 这对我有用 dgRowSelect False and dgMultiSelect
  • 带有 Joomla 的 Intranet 网站?

    我的公司想在局域网上建立一个小型的内联网门户 我们最多大约有 100 个用户 我正在考虑在带有 XAMPP 的 Windows 服务器环境上使用 Joomla 为了安全起见 XAMPP 为大约 50 到 100 个用户提供服务是否有效 它有
  • 从视频获取MediaStreamTrack(音频)

    我想在从画布录制的同时从视频元素录制音频 我有 var stream canvas captureStream 29 现在我将视频的audioTrack 添加到流中 var vStream video captureStream strea
  • Flask 函数 url_for 不适用于 Bluehost 上的子域部署

    我在 Bluehost 根目录下的子目录中部署了一个非常简单的 Flask 应用程序 名为 app 希望 example com 指向主页 example com app 指向我的 Flask 应用程序 实际上 当脚本 index py 如
  • 使用 POST 从 iOS 将数组传递给 PHP

    因此 我浏览了无数类似的问题 但没有一个回答我正在寻找的问题或以完整的方式回答它 所以希望你们都能帮助我 我需要使用 POST 或任何可以正常工作的方式将 RestaurantID 数组从 iOS 传递到 PHP 文件 我知道 ASIHTT