NSURLConnection 异步加载网络数据

时间:2023-03-08 20:27:58

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

//[self takeRequestUrlWithString:@"http://127.0.0.1/test.json"];

//[self takeRequestUrlWithString:@"http://www.baidu.com"];

}

-(void)takeRequestUrlWithString:(NSString*)str

{

NSURL *url=[NSURL URLWithString:str];

NSURLRequest *request=[NSURLRequest requestWithURL:url cachePolicy:1 timeoutInterval:15];

[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {

if(!connectionError)

{

NSHTTPURLResponse *httpResponse=(NSHTTPURLResponse*)response;

if (httpResponse.statusCode==200) {

NSError *error=nil;

//返回的要么是字典要么是数组

id needData=[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&error];

if(error)

{

NSLog(@"JSON 解析出错:%@",error);

}

else{

NSLog(@"模型转换:数据为:%@",needData);

}

}

else

{

NSLog(@"服务器出错 ,错误码:%ld",httpResponse.statusCode);

}

}

else{

NSLog(@"连接错误!!!");

}

}];

}

@end

@interface RYDataModel : NSObject

@property(nonatomic,strong)NSNumber *age;

@property(nonatomic,copy)NSString*name;

@property(nonatomic,strong)NSDictionary*school;

+(instancetype)dataWithDict:(NSDictionary*)dict;

@end

@implementation RYDataModel

+(instancetype)dataWithDict:(NSDictionary*)dict

{

RYDataModel *model=[RYDataModel new];

[model setValuesForKeysWithDictionary:dict];

return model;

}

@end