对iOS网络请求的容易封装,并且使用block回调函数方式


对iOS网络请求的简单封装,并且使用block回调函数方式

// 废话不多说直接上代码

 

//     RequestHttpClass.h文件  

/*封装简单的异步请求*/

#import <Foundation/Foundation.h>


// 相当于定一个函数指

typedef void(^FinishLoadBlock)(NSData *);


@interface RequestHttpClass : NSMutableURLRequest <NSURLConnectionDataDele


// 异步求的数据

@property (nonatomic, retain) NSMutableData *data;

@property (nonatomic, retain) NSURLConnection *connection;

@property (nonatomic, copy)FinishLoadBlock block;


- (void)startAsync;

- (void)cancel;

@end


//  RequestHttpClass.m 文件


#import "RequestHttpClass.h"


@implementation RequestHttpClass


-(void)startAsync {

      self.data = [[NSMutableData alloc] init];

      // 起异步

      self.connection = [NSURLConnection connectionWithRequest:self delegate:self];

}

- (void)cancel {

    [self.connection cancel];

}

// 异步求每次返回的数据

- (void) connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {

         [self.data appendData:data];

}


- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {

          NSLog(@"求网:%@", error);

}

-(void) dealloc {

                 [_data release];

                 [super dealloc];

}


@end


-------------------------------------------------------------------------------------

------------------------------------------------------------------------------------


//  RequestData.h 文件


#import <Foundation/Foundation.h>

typedef void(^Completion)(id);


@interface RequestData : NSObject

// 访问天气预报接口

+ (void)getWeatherData:(NSDictionary *)params block: (Completion) block;


@end



// RequestData.m 文件

#import "RequestData.h"

#import "RequestHttpClass.h"


#define BASE_URL @"http://www.weather.com.cn/data/sk/"


@implementation RequestData


+ (void)getWeatherData:(NSDictionary *)params block:(Completion )block {


  NSString *cityCode = [params objectForKey:@"code"];

  NSString *urlstring =   [BASE_URLstringByAppendingFormat:@"%@.html",cityCode];


  RequestHttpClass *request = [RequestHttpClass requestWithURL:[NSURL  URLWithString:urlstring]];

  [request setHTTPMethod:@"GET"];

  [request setTimeoutInterval:60];

  request.block = ^(NSData *data) {

     id ret = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];

      block(ret);

      };

 [request startAsync];


}


@end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值