您的位置:首页 > 理论基础 > 计算机网络

ASIHTTPRequest的使用——网络请求缓存

2014-05-16 09:15 489 查看
///////////////////////////////////////////////////////////////////////////

.h文件
#import <Foundation/Foundation.h>
#import "ASIFormDataRequest.h"

@protocol NetWorkdelegate <NSObject>

- (void)NetWorkwithConnectId:(int)connectid backstring:(NSString *)aback;

@end

@interface JSNetWork : NSObject <ASIHTTPRequestDelegate>

+ (JSNetWork *)shareNetWork;

- (void)JsNetWordWithConnectId:(int)connectid Body:(NSString *)body PostBody:(NSString *)PostBody Delegate:(id<NetWorkdelegate>)delegate;

@end


.m文件
@implementation JSNetWork

+ (JSNetWork *)shareNetWork
{
static dispatch_once_t onceToken;
static JSNetWork *netWork = nil;
dispatch_once(&onceToken, ^{
netWork = [[JSNetWork alloc] init];
});
return netWork;
}

#pragma mark -request
- (void)JsNetWordWithConnectId:(int)connectid Body:(NSString *)body PostBody:(NSString *)PostBody Delegate:(id<NetWorkdelegate>)delegate
{
if (![self Isconnect])
{
UIAlertView *alertview = [[UIAlertView alloc] initWithTitle:nil message:@"not work" delegate:self cancelButtonTitle:@"ok" otherButtonTitles: nil];
[alertview show];
[alertview release];
return;
}
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:body]];
request.timeOutSeconds = 30;
request.delegate = self;
request.requestMethod = @"POST";
NSArray *Bodyarry = [PostBody componentsSeparatedByString:@"&"];
for (NSString *tmp in Bodyarry)
{
NSArray *temparrary = [tmp componentsSeparatedByString:@"="];
[request setPostValue:temparrary[1] forKey:temparrary[0]];
}
NSString *cid = [NSString stringWithFormat:@"%zi",connectid];
NSDictionary *dic = @{@"connectid":cid,@"delegate":delegate};
[request setUserInfo:dic];
[request startAsynchronous];
}

- (void)requestFinished:(ASIHTTPRequest *)request
{
NSDictionary *userinfo = request.userInfo;
int connectid = [userinfo[@"connectid"] intValue];
id<NetWorkdelegate> delegate = userinfo[@"delegate"];
NSString *str = [request responseString];
[delegate NetWorkwithConnectId:connectid backstring:str];
}

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

}

- (BOOL)Isconnect
{
BOOL iscon = NO;
Reachability *r = [Reachability reachabilityWithHostName:@"www.baidu.com"];
switch ([r currentReachabilityStatus])
{
case NotReachable:
{
NSLog(@"not network");
iscon = NO;
}
break;
case ReachableViaWiFi:
{
NSLog(@"wifi");
iscon = YES;
}
break;
case ReachableViaWWAN:
{
NSLog(@"3g");
iscon = YES;
}
break;
default:
break;
}
return iscon;
}

@end


///////////////////////////////////////////////////////////////////////////

使用文件
- (void)viewDidLoad
{
[super viewDidLoad];
[[JSNetWork shareNetWork] JsNetWordWithConnectId:100 Body:@"http://www.baidu.com" PostBody:nil Delegate:self];
// Do any additional setup after loading the view, typically from a nib.
NSString *path = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
path = [path stringByAppendingPathComponent:@"1.plist"];
NSString *str = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
if(str.length > 0)
{
[self NetWorkwithConnectId:100 backstring:str];
}
}

- (void)dealloc
{
[_txt release];
[super dealloc];
}

- (void)NetWorkwithConnectId:(int)connectid backstring:(NSString *)aback
{
self.txt.text = aback;
[self Save:aback];
}

- (void)Save:(NSString *)str
{
NSString *path = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
path = [path stringByAppendingPathComponent:@"1.plist"];
[str writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:nil];
}


///////////////////////////////////////////////////////////////////////////
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: