【问题标题】:iPhone App/JSON - Posting Data to Remote DatabaseiPhone App/JSON - 将数据发布到远程数据库
【发布时间】:2011-07-06 23:39:34
【问题描述】:

我有一个 iPhone 应用程序,它使用 ASIHTTPRequest 将数据发布到 php 文件,然后使用 sql 相应地更新数据库。

困扰我的是我一直在阅读我应该以 JSON 格式对我发布的数据进行编码。有人可以向我解释这一点吗?为什么要以 JSON 格式编码?这有什么好处,需要什么..

编辑:

这是我发布数据的方式:

-(void) postToDB:(NSString*) msg{
    NSString *myphp = @"http://localhost:8888/databases/test.php";
    NSURL *url = [NSURL URLWithString:myphp];
    ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
    [request setPostValue:msg forKey:@"message"];
    [request setDelegate:self];
    [request startAsynchronous];
}

【问题讨论】:

  • 您目前如何将数据发布到您的 PHP 脚本?通过请求类似 action=createUser&name=foobar&password=qwerty ?
  • 恕我直言,当您必须将结构映射到结构时,它最有用(也是最需要的)。例如,您可能有一个 API,它既可以返回 JSON 格式的对象,也可以接收 JSON 格式的相同对象。

标签: php iphone json ios4


【解决方案1】:

将数据封装在 JSON 结构中有助于创建与服务器的结构化通信协议。根据您的需要,不至于如此,请查看 JSON-RPC 的规范,例如。这允许您拥有一个完全定义的协议来交换数据,其中方法总是以相同的方式传递,错误也总是以相同的方式返回。

严格来说,JSON、JSON-RPC、SOAP 或任何其他“信封”的使用绝不是强制性的。这只是标准化有线通信的一个好习惯。

另外,我不知道setPostValue:ForKey: 是否会在需要时自动转义字符,但假设您正在向http://whatever/get.php?nickname=nick&with?special@chars&password=qzerty 发送 GET。 这里会发生什么?您的 PHP 脚本将无法正确解析“昵称”和“密码”字段。 在 JSON 框架的帮助下将数据封装在 JSON 中(您可以在一行代码中完美地将 NSString 字典转换为 JSON 结构)有助于防止这种情况发生。

【讨论】:

    【解决方案2】:

    我认为它将数据库与您的应用程序分开。如果您使用 JSON 而不仅仅是直接的 SQL,它使您能够切换数据库并创建新视图。例如,您厌倦了 MYSQL 并想尝试像 Mongodb 这样的花哨的新 NOSQL 数据库之一,而不是重写您的整个 iphone 应用程序,您只需很难重写一个 php 脚本。另一个例子是,如果您的应用程序运行良好并且您想要创建 Android 版本或 Web 版本,JSON 使这更容易,只需安装 JSON 库即可!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-19
      • 2021-09-24
      • 2021-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多