当我开始构建我的第一个iPhone应用程序的框架时,我想了解更多关于与HTTP服务器交互的“标准”或首选方法。我假设大多数这些iPhone应用程序启动HTTP连接以发送和接收数据。执行此任务的首选数据格式和方法是什么?
次要问题:是否有其他方式向服务器发送/接收数据?我应该避免使用PHP Web服务器作为与几个数据库交互的中间人吗?
当前流程:
出站:iOS - > Http请求 - > PHP - > MySQL数据库
入站:MySQL - > PHP - > JSON数据 - >的iOS
答案 0 :(得分:0)
没有首选格式。我个人喜欢使用JSON,但有些人因为速度而发誓。如果您对它更熟悉,也可以使用XML。我发现使用ASIHTTPRequest和JSONKit在iOS上使用JSON REST API非常有趣。它很容易上手,灵活性允许一些非常酷的东西。
您绝对应该使用PHP服务器作为“中间人”,因为您希望在收到数据时验证服务器端的数据。直接暴露您的数据库会使其暴露于攻击并使用PHP可以为您节省许多麻烦和问题。当然你可以使用其他框架和语言,如Ruby(RoR,Sinatra等),Python(Django)和其他语言
您当前的流程对我来说很合适,也是Web上许多服务用来解决这个问题的原因。
答案 1 :(得分:0)
我会使用XML与您的服务器进行通信,除非您正在做一些特别的事情(视频/音频或打包您自己的数据)。 Cocoa内置了对XML的支持,因此它可以加快开发过程。
还有其他与服务器通信的方法。您可以编写自己的协议,只有您的客户才能理解(最高安全性,但可能难以维护或可能发现错误)。你可以使用别人的框架(比如JSON)。
有关JSON的详细信息,请参阅此链接iPhone/iOS JSON parsing tutorial
您可以尝试NSURLConnection。这通常是你最好的选择。这是访问Web资源的首选方法。请务必查看NSURLConnection SSL HTTP Basic Auth以了解如何使用SSL。如果您正在调试并且您的证书不太受信任,请查看:如何使用NSURLConnection连接SSL以获取不受信任的证书?
关于您的数据库问题。
我个人会使用直接与我的数据库通信的PHP Web服务器,因为 1.我可以更改网络托管公司,我的iOS应用只需要知道域名(www.example.com/?username=abc&password=0000&uuid=000000&data=PackagedData) 2.我可以将我的DB计划从FREE升级到可以管理更多连接(或DB类型)的东西,我只需要更新PHP脚本中的连接字符串(无需更新客户端iOS应用程序)
以下是您不希望与数据库服务器直接通信的一些可怕原因 1.如果您要存储敏感的非公开数据(用户名,文档,密码等),那么您将承担巨大的风险。聪明的黑客可以对您的应用进行逆向工程,找到用于连接数据库的字符串,然后访问您的数据库(在您不知情的情况下)。可能使用数据或出售它!