码迷,mamicode.com
首页 > 移动开发 > 详细

ios中的ASIHTTPRequest的同步请求和异步请求

时间:2014-06-08 10:54:39      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:ios asihttprequest


1、首先加入ASI开源库


2、

WebImageView.h

#import <UIKit/UIKit.h>

#import "ASIHTTPRequest.h"

@interface WebImageView :UIImageView<ASIHTTPRequestDelegate>


- (void)setImageURL:(NSURL *)url;


@end


WebImageView.m


#import "WebImageView.h"

#import"ASIHTTPRequest.h"


@implementation WebImageView


- (id)initWithFrame:(CGRect)frame

{

    self = [superinitWithFrame:frame];

    if (self) {

        // Initialization code

    }

    returnself;

}


- (void)setImageURL:(NSURL *)url{

    //同步请求

    //[self synchronous:url];

    

    //异步请求

    [selfasynchronous:url];

}


//同步请求

- (void)synchronous:(NSURL *)url{

    ASIHTTPRequest *request = [ASIHTTPRequestrequestWithURL:url];

    [request setRequestMethod:@"GET"];

    [request setTimeOutSeconds:60];

    

   //设置请求头

    //[request setRequestHeaders:<#(NSMutableDictionary *)#>];

    //设置cookie

    //[request setRequestCookies:<#(NSMutableArray *)#>];

    

   //发送同步请求

    [request startSynchronous];

    

    NSError *error = [requesterror];

    if (error ==nil) {

       //获取请求下来的数据

        NSData *data = request.responseData;

        UIImage *image = [UIImageimageWithData:data];

        self.image = image;

    }else{

        NSLog(@"网络请求失败%@",error);

    }


}


//异步请求

-(void)asynchronous:(NSURL *)url{

    ASIHTTPRequest *request = [ASIHTTPRequestrequestWithURL:url];

    [request setRequestMethod:@"GET"];

    [request setTimeOutSeconds:60];

    

    request.delegate =self;

    [request startAsynchronous];

    

}



#pragma mark ASIHTTPRequest  delegate------异步请求的协议方法的实现---------


//请求数据完成

- (void)requestFinished:(ASIHTTPRequest *)request{

    NSData *data = request.responseData;

    self.image = [UIImageimageWithData:data];

}


//请求失败

- (void)requestFailed:(ASIHTTPRequest *)request{

    

    NSError *error = [requesterror];

    NSLog(@"网络请求失败%@",error);

}


@end


3、运用Block方式进行网络异步请求,此时不需要实现delegate

//异步请求

-(void)asynchronous:(NSURL *)url{

    ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];

    [request setRequestMethod:@"GET"];

    [request setTimeOutSeconds:60];

    

    //设置网络请求完成后的block此时不需要delegate

    

    [request setCompletionBlock:^{

        NSData *data = request.responseData;

        self.image = [UIImage imageWithData:data];

    }];

    //设置请求失败调用的block

    [request setFailedBlock:^{

        NSError *error = [request error];

        NSLog(@"网络请求失败%@",error);


    }];

    [request startAsynchronous];

    

}




ios中的ASIHTTPRequest的同步请求和异步请求,布布扣,bubuko.com

ios中的ASIHTTPRequest的同步请求和异步请求

标签:ios asihttprequest

原文地址:http://blog.csdn.net/eduora_meimei/article/details/28688497

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!