2011-07-28 87 views
0

我正在尝试决定什么是我在学习如何为iPhone开发时编写的小应用程序的最佳选项。我希望应用程序向我的网站发送请求,该请求会更新数据库并在Web屏幕上提醒用户。如果这种情况成功发生,iPhone上应该会显示一条消息。Web服务V HTTP Post?

我的数据库是MySQL,我正在使用PHP的网站。我曾考虑过使用REST或SOAP,但现在我正考虑在HTTP请求上使用POST数组。对于初学者来说,哪个是最好的选择和最容易实现的?

感谢, BON

顺便说一句抱歉,如果这已经全部问过,但我想在分学习目标C,这是所有新的给我。

+0

这是在这里讨论了一大堆的时间。例如:http://stackoverflow.com/questions/6598415/iphone-app-json-posting-data-to-remote-database/6598630 – Cyrille

回答

1

对于REST来说,除了基本的HTTP之外没有什么更多的 - REST添加的唯一部分是约定哪些HTTP动词(POST/GET/PUT/DELETE)应该映射到哪些数据库操作,以及URL路径如何映射资源。

肥皂不是明智的选择;它在这种情况下并没有提供任何真正有趣的内容,但是带来了相当大的开销(无论是在带宽和处理复杂度方面)。

我的选择将是一个简单的HTTP通过简单的JSON接口。如果您在Apache下运行PHP,则可以简单地将所有请求重写为一个处理程序脚本,然后从中分析原始URL以执行所需的操作。返回JSON非常简单明了:构建一个嵌套的数组结构,调用json_encode并返回结果。无论您遵循RESTful惯例(HTTP动词表示动作)还是简单地使用查询字符串参数(例如?action=insert)都是一种趣味问题 - 查询字符串参数更容易实现,HTTP动词更接近于RESTful哲学。

+0

+1“对于REST来说,没有比基本HTTP更多的东西.. “。 –

0

我肯定会推荐你使用简单的HTTP。它会让你的速度非常快,而且很容易实现。

要创建一个请求:

NSString *url = @"your request"; 
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:url] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:20.0]; 
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self]; 

if(connection) 
{ 
    _systemsData = [[NSMutableData data] retain]; 
} 
else 
{ 
    NSLog(@"NSURLConnection failed!"); 
} 

然后只需实现方法:

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response 
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data 
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error 
- (void)connectionDidFinishLoading:(NSURLConnection *)connection