i want to download some webpages ,but this example code seems doesn't work. it prints "begin download" and then exits,why the delegates method does not be executed? what's wrong in the example code? thanks
main.m
#import <Foundation/Foundation.h>
#import "Test.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
Test * test = [[Test alloc]init];
[test downloadData];
}
[NSThread sleepForTimeInterval:21.0f];
return 0;
}
Test.h
#import <Foundation/Foundation.h>
@interface Test : NSObject <NSURLConnectionDelegate,NSURLConnectionDataDelegate,NSURLConnectionDownloadDelegate>
@property (retain) NSMutableData * receivedData;
@property (retain) NSURLConnection * theConnection;
- (void) downloadData;
@end
Test.m
#import "Test.h"
@implementation Test
- (void) downloadData
{
NSURLRequest *theRequest=
[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.sf.net/"]
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:60.0];
_receivedData = [NSMutableData dataWithCapacity: 0];
[NSURLConnection sendSynchronousRequest:theRequest
returningResponse:nil
error:nil];
NSLog(@"begin download");
if (!_theConnection) {
_receivedData = nil;
// Inform the user that the connection failed.
}
}
enter code here
#pragma mark -
#pragma mark NSURLConnectionDataDelegateenter code here methods
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
NSLog(@"1");
[_receivedData setLength:0];
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
NSLog(@"2");
[_receivedData appendData:data];
}
- (void)connection:(NSURLConnection *)connection
didFailWithError:(NSError *)error
{
NSLog(@"3");
_theConnection = nil;
_receivedData = nil;
// inform the user
NSLog(@"Connection failed! Error - %@ %@",
[error localizedDescription],
[[error userInfo] objectForKey:NSURLErrorFailingURLStringErrorKey]);
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
NSLog(@"4");
NSLog(@"Succeeded! Received %lu bytes of data",(unsigned long)[_receivedData length]);
_theConnection = nil;
_receivedData = nil;
}
-(void) connectionDidFinishDownloading:(NSURLConnection *)connection destinationURL:(NSURL *)destinationURL
{
NSLog(@"5");
}
@end