NSURLConnection
这使您可以通过提供URL 请求对象来加载URL 的内容。通过使用NSURLConnection,您可以使用回调块异步和同步加载 URL 请求。看这个例子
NSURL *URL = [NSURL URLWithString:@"http://example.com"];
NSURLRequest *request = [NSURLRequest requestWithURL:URL];
[NSURLConnection sendAsynchronousRequest:request
queue:[NSOperationQueue mainQueue]
completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
// ...
}];
更多内容可以去apple docs
AFNetworking
这是建立在Foundation URL Loading之上的第三方库。
这很容易通过 pod 安装并且使用方便。请参阅下面的示例,例如我如何在我的应用中使用它
-(AFHTTPRequestOperationManager *)manager
{
if (!_manager)
{
_manager = [AFHTTPRequestOperationManager manager];
_manager.requestSerializer = [AFHTTPRequestSerializer serializer];
_manager.responseSerializer = [AFHTTPResponseSerializer serializer];
}
return _manager;
}
上面我们正在初始化AFHTTPRequestOperationManager *manager的实例
[self.manager POST:@"http://example.com" parameters:parameters
success:^(AFHTTPRequestOperation *operation, id responseObject)
{
NSError *error;
NSMutableDictionary *responseDict = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:&error];
// return response dictionary in success block
}
failure:^(AFHTTPRequestOperation *operation, NSError *error)
{
// return error in failure block
}]
上述方法将异步加载数据,其余的是不言自明的。但是,如果您想像同步请求一样阻止用户界面,而不是使用[operation waitUntilFinished],这是一种反模式。这里operation 是AFJSONRequestOperation 的一个实例。