#import "FirstViewController.h"
@interface FirstViewController ()<NSURLConnectionDataDelegate, NSURLConnectionDelegate>
@property (nonatomic, retain) NSMutableData *data;
@property (nonatomic, retain) NSURLConnection *connection;
@end
@implementation FirstViewController
- (void)dealloc
{
[_connection cancel];
[_data release];
[_connection release];
[super dealloc];
}
- (void)viewDidLoad {
self.view.backgroundColor = [UIColor redColor];
[self addBarButtonItme];
[super viewDidLoad];
}
- (void)addBarButtonItme
{
UIBarButtonItem *leftButton = [[ UIBarButtonItem alloc] initWithTitle:@"同步" style:(UIBarButtonItemStylePlain) target:self action:@selector(actionLeft:)];
self.navigationItem.leftBarButtonItem = leftButton;
[leftButton release];
UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithTitle:@"异步" style:(UIBarButtonItemStylePlain) target:self action:@selector(actionRight:)];
self.navigationItem.rightBarButtonItem = rightButton;
[rightButton release];
}
- (void)actionLeft:(UIBarButtonItem *)leftButton
{
NSString *oldUrl = kSearchURL;
NSString *newUrl = [oldUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *url = [NSURL URLWithString:newUrl];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:(NSURLRequestUseProtocolCachePolicy) timeoutInterval:30.0];
[request setHTTPMethod:@"GET"];
NSURLResponse *response = nil;
NSError *error = nil;
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
NSMutableDictionary *dataDic = [NSJSONSerialization JSONObjectWithData:data options:(NSJSONReadingMutableContainers) error:nil ];
NSLog(@"%@", dataDic);
}
- (void)actionRight:(UIBarButtonItem *)rightButton
{
NSString *newUrl = [kSearchURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *url = [NSURL URLWithString:newUrl];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:(NSURLRequestUseProtocolCachePolicy) timeoutInterval:30.0];
[request setHTTPMethod:@"GET"];
#pragma mark - 异步请求 利用Block 方法实现
[NSURLConnection sendAsynchronousRequest:request queue:([NSOperationQueue mainQueue]) completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
NSMutableDictionary *dataDic = [NSJSONSerialization JSONObjectWithData:data options:(NSJSONReadingMutableContainers) error:nil];
NSLog(@"%@", dataDic);
NSLog(@"%d", [NSThread isMainThread]);
}];
#pragma mark -- 异步请求 利用代理方法实现--
}
#pragma mark - 代理方法实现
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
NSMutableDictionary *dataDic = [NSJSONSerialization JSONObjectWithData:(self.data) options:(NSJSONReadingMutableContainers) error:nil];
NSLog(@"%@", dataDic);
NSLog(@"已经完成加载");
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
[self.data appendData:data];
NSLog(@"接收数据时触发");
}
- (void) connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
self.data = [NSMutableData data];
NSLog(@"接收到服务器数据, 说明 链接成功");
}
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
NSLog(@"查看错误信息");
}