【发布时间】:2011-08-31 19:41:09
【问题描述】:
如何使用 Objective-C 向 Web 服务发送 HTTP 请求?我需要从我的 MySQL 数据库中获取一些数据,所以我需要发送请求以便获取数据。
【问题讨论】:
标签: ios objective-c iphone http
如何使用 Objective-C 向 Web 服务发送 HTTP 请求?我需要从我的 MySQL 数据库中获取一些数据,所以我需要发送请求以便获取数据。
【问题讨论】:
标签: ios objective-c iphone http
编辑,因为这是一个流行的问题,而且时间还在继续。 与此同时,Apple 引入了 NSJSONSerialization。看看文档:https://developer.apple.com/documentation/foundation/jsonserialization 仅当您需要为 5.0 之前的 iOS 创建代码时,您可能需要使用下面提到的 json-framework。
除此之外,以下原始答案仍然有效:
假设您以 JSON 格式交换数据,您可能有兴趣阅读本文。 http://iosdevelopertips.com/cocoa/json-framework-for-iphone-part-2.html
但是,该文章的第一部分回答了您关于如何从 Web 服务器/服务接收数据的更一般性的问题:
- (NSString *)stringWithUrl:(NSURL *)url
{
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url
cachePolicy:NSURLRequestReturnCacheDataElseLoad
timeoutInterval:30];
// Fetch the JSON response
NSData *urlData;
NSURLResponse *response;
NSError *error;
// Make synchronous request
urlData = [NSURLConnection sendSynchronousRequest:urlRequest
returningResponse:&response
error:&error];
// Construct a String around the Data from the response
return [[NSString alloc] initWithData:urlData encoding:NSUTF8StringEncoding];
}
这是一个简单的 http 请求示例,对于您的后续步骤来说肯定足够了。 这个方法有一个 URL,它返回一个 NSString 中服务器发送的数据。
一旦正常工作,您将希望避免您的应用在请求“正在播放”时冻结。 您可以通过异步请求来解决这个问题。 Google 或在 stackoverflow 上的搜索将为您提供相关示例和教程的链接。但我建议先从这里开始,尽管这可能不是最终的解决方案。
【讨论】:
有很多方法,但也许最简单的方法是使用现有框架 ASIHTTPRequest。
【讨论】:
以下是许多非常有名的库,您可以使用它来请求
ASIHTTPRequest
AFNetwork
MFNetwork
您可以在 google 中搜索它,在 github 中下载,或者,是的,当然,为什么不使用 Cocoapods。当我将 Objective-c 与其他语言进行比较时,这是最好的事情。
祝你好运
【讨论】:
ASIHTTPRequest 是一个伟大而简单的框架,所以我支持其他帖子的建议。不过,为了完整起见,您还应该知道,您可以在没有其他框架的情况下在 Objective-C 中本地执行此操作。查看 Apple 文档中有关 NSURLConnection 和 NSURLConnectionRequest 类的背景信息。
【讨论】: