NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:TOP_APPS_URL]];
NSURLConnection *topAppsConnection = [[[NSURLConnection alloc] initWithRequest:request delegate:self] autorelease];
if (topAppsConnection)
self.topAppsData = [NSMutableData data];
下面是NSURLConnection的几个代理方法:
#pragma mark NSURLConnectionDelegate
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
NSInteger status = [(NSHTTPURLResponse *)response statusCode];
if (status != 200)
[self cancel:connection];
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
[topAppsData appendData:data];
}
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
[self cancel:connection];
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
NSString *topAppsString = [[[NSString alloc] initWithData:topAppsData encoding:NSUTF8StringEncoding] autorelease];
self.topAppsData = nil;
@try {
RootViewController *rootViewController = (RootViewController *)[navigationController.viewControllers objectAtIndex:0];
rootViewController.topApps = [[[topAppsString JSONValue] objectForKey:@"feed"]objectForKey:@"entry"];
[self.window addSubview:navigationController.view];
}
@catch (NSException *e) {
}
}
接下来,就是这几个代理方法中用到的cancel:函数的实现:
- (void)cancel:(NSURLConnection *)connection {
[connection cancel];
self.topAppsData = nil;
}
具体的例子可以到自定义UIScrollView进行下载。
分享到:
相关推荐
在Android环境中,虽然不直接使用NSURLConnection,但这个概念可以帮助理解网络通信的基础知识,特别是当我们考虑跨平台开发时。 首先,远程摄像头监控程序通常涉及通过网络传输视频流或静态图像。在iOS和Android...
2. 设置代理:NSURLConnection使用代理模式,你需要实现NSURLConnectionDelegate和NSURLConnectionDataDelegate协议的方法。这些方法会在请求的不同阶段被调用,例如开始加载、接收到数据、请求完成等。 3. 启动连接...
2. **初始化`NSURLConnection`**:使用`NSURLConnection`的`initWithRequest:delegate:startImmediately:`方法初始化连接,传入请求对象和代理对象。 3. **代理方法**: - `connection:didReceiveResponse:`:在这...
同时,为了优化性能和用户体验,可以考虑使用`NSURLSession`代替`NSURLConnection`,因为前者提供了更多的功能和更好的性能。但`NSURLConnection`对于简单的异步下载任务仍然是一个有效且实用的选择。
接着,我们可以选择创建一个NSURLConnection实例并启动请求,或者使用类方法`+[NSURLConnection sendAsynchronousRequest:queue:completionHandler:]`发起异步请求。 对于处理中文字符,NSURLConnection可能会遇到...
通过调用NSURLConnection的start方法,我们可以发起一个请求,并在接收到服务器响应时回调我们预先设置的代理方法。这种异步特性使得应用可以在等待数据返回的同时执行其他任务,提高用户体验。 为了实现单点下载,...
在iOS7后,NSURLSession基本代替了NSURLConnection进行网络开发,在iOS9后,NSURLConnection相关方法被完全的弃用,iOS系统有向下兼容的特性,尽管NSURLConnection已经被弃用,但在开发中,其方法依然可以被使用,...
使用NSURLConnection时,通常需要实现NSURLConnectionDelegate和NSURLConnectionDataDelegate协议,以便处理请求的开始、数据接收、错误以及完成等事件。 创建一个NSURLConnection请求的基本步骤如下: 1. 创建一...
封装`NSURLConnection`时,我们需要创建一个请求对象,设置请求头和参数,然后通过代理方法监听网络请求的状态,如请求开始、结束、数据接收等。回调通常通过实现`NSURLConnectionDataDelegate`和`...
早期,Objective-C的开发者通常使用NSURLConnection来执行这些任务,但随着iOS 7的发布,Apple引入了更现代、更高效的NSURLSession API。本篇文章将深入探讨如何将原本使用NSURLConnection的同步任务转换为使用...
本教程将探讨使用`NSURLConnection`、`NSURLSession`以及第三方库`AFNetworking`在Swift中进行文件下载的方法。这些方法各有优劣,适用于不同的场景。 首先,`NSURLConnection`是iOS较早版本中的网络请求API,虽然...
使用`NSURLConnection`的`connectionWithRequest:delegate:`方法初始化连接,并传入请求对象和委托对象(通常是当前类的实例)。委托对象需要遵循`NSURLConnectionDataDelegate`协议,以便处理接收到的数据。 ```...
BDMultiDownloader, 在NSURLConnection上,基于简单块的并发多URL数据下载 基于 #BDMultiDownloader的简单 objective-c 块基于并发多址数据下载器你的应用... 这个类使用块和NSURLConnection实现了一个简单的方法。##Fe
1. **同步请求**: 使用`start`方法发送请求,当前线程会阻塞直到服务器响应,不推荐在主线程中使用,因为它可能导致UI冻结。 ```objc NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:...
`NSURLConnection`是早期的网络请求API,它通过代理方法回调来处理网络请求。而`NSURLSession`是iOS 7及更高版本引入的现代网络接口,提供了更多的功能和性能优化。两者都依赖于URL Loading System,而`...
这是使用NSURLConnection为iOS进行SSL公钥固定的示例实现。 当客户端通过SSL / TLS连接到服务器时,服务器将提供证书。 该证书包含一个公共密钥。 在此示例中,我们提取公钥并将其与本地副本进行比较。 如果服务器...
可以运行项目,没有UI控件,在ViewController的viewDidLoad方法中我们使用XplatNetworkMonitorClient开始监控,并将self作为NSNotificationCenter观察者添加到kXPLNetworkMonitorNotification键。 当网络被拦截时,...
下面将详细讲解NSURLConnection的使用步骤以及相关知识点。 首先,我们需要了解如何使用NSURLConnection发送GET和POST请求。GET请求通常用于获取服务器上的静态数据,而POST请求则用于向服务器提交数据。在iOS中,...