方法声明部分
#import <Foundation/Foundation.h>
@protocol NetworkHandleDelegate <NSObject>
- (void)didFinishLoading:(id)result;
@end
@interface NetworkHandle : NSObject
#pragma mark - 封装: 通过delegate向外传值
@property (nonatomic, assign) id <NetworkHandleDelegate> delegate;
- (void)asynGETWithURL:(NSString *)urlString;
+ (void)sendAsynGETWithURL:(NSString *)urlString delegate:(id<NetworkHandleDelegate>)delegate;
#pragma mark - 封装:通过block向外传值
+ (void)asynGETJSONWithURL:(NSString *)urlString completion:(void(^)(id))block;
+ (void)asynPOSTJSONWithURL:(NSString *)urlString httpBody:(NSString *)bodyString completion:(void(^)(id result))block;
@end
实现部分
#import "NetworkHandle.h"
@interface NetworkHandle ()
@end
@implementation NetworkHandle
+ (void)asynGETJSONWithURL:(NSString *)urlString completion:(void(^)(id result))block {
NSString *enCodingStr = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *url = [NSURL URLWithString:enCodingStr];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
NSError *error = nil;
id result = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&error];
block(result);
}];
}
#pragma mark - Block传值
+ (void)asynPOSTJSONWithURL:(NSString *)urlString httpBody:(NSString *)bodyString completion:(void(^)(id result))block {
NSURL *url = [NSURL URLWithString:[urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
request.HTTPMethod = @"POST";
request.HTTPBody = [bodyString dataUsingEncoding:NSUTF8StringEncoding];
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
id result = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
block(result);
}];
}
- (void)asynGETWithURL:(NSString *)urlString {
NSString *enCodingStr = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *url = [NSURL URLWithString:enCodingStr];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
id result = [NSJSONSerialization JSONObjectWithData:data options:1 error:nil];
[self.delegate didFinishLoading:result];
}];
}
+ (void)sendAsynGETWithURL:(NSString *)urlString delegate:(id<NetworkHandleDelegate>)delegate {
NSString *enCodingStr = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *url = [NSURL URLWithString:enCodingStr];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
id result = [NSJSONSerialization JSONObjectWithData:data options:1 error:nil];
[delegate didFinishLoading:result];
}];
}
@end