一、第一次封装
1、.h
typedefvoid(^FinishBlock)(NSData *data);
typedefvoid(^FailedBlock)();
//typedef void(^)(NSData *data) FinishBlock; 这是之前的写法,oc要求上面的写法
@interface QFHTTPRequest :NSObject<NSURLConnectionDataDelegate>
{
NSMutableData *_mData;
}
@property(nonatomic,copy)NSString *url;
@property(nonatomic,copy)FinishBlock finishBlock;
@property(nonatomic,copy)FailedBlock failedBlock;
//开始请求
-(void)startRequest;
@end
@implementation QFHTTPRequest
-(void)dealloc
{
[_mDatarelease];
[superdealloc];
}
-(void)startRequest
{
_mData = [[NSMutableDataalloc] init];
NSURLRequest *request = [NSURLRequestrequestWithURL:[NSURLURLWithString:self.url]];
[NSURLConnectionconnectionWithRequest:request delegate:self];
}
-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
[UIApplicationsharedApplication].networkActivityIndicatorVisible =YES;
}
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
[_mDataappendData:data];
}
-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
//成功回调
self.finishBlock(_mData);
[UIApplicationsharedApplication].networkActivityIndicatorVisible =NO;
}
-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
//失败回调
self.failedBlock();
}
@end
#import "QFHTTPRequest.h"
@interface QFHTTPManger : NSObject
+(void)requestWithURL:(NSString *)url FinishBlock:(FinishBlock)finishBlock FailedBlock:(FailedBlock)failBlock;
@end
@implementation QFHTTPManger
+(void)requestWithURL:(NSString *)url FinishBlock:(FinishBlock)finishBlock FailedBlock:(FailedBlock)failBlock
{
QFHTTPRequest *request = [[QFHTTPRequest alloc] init];
request.url = url;
request.finishBlock = finishBlock;
request.failedBlock = failBlock;
[request startRequest];
}
@end