CatchData.h
//
// CatchData.h
// ios
//
// Created by wxin9 on 11-10-12.
// Copyright 2011年 __MyCompanyName__. All rights reserved.
//
@protocol CatchDataDelegate <NSObject>
- (void)catchDataHasFinishCatchWithURL:(NSString*)url check:(BOOL)check;
@end
#import <Foundation/Foundation.h>
#import "Three20/Three20.h"
@interface CatchData : NSObject<TTURLRequestDelegate>{
TTURLRequest *_requestGet;
NSString *_urlString;
id<CatchDataDelegate> *_delegate;
}
@property(nonatomic,retain) TTURLRequest *requestGet;
@property(nonatomic,retain) NSString *urlString;
@property(nonatomic,assign) id<CatchDataDelegate> *delegate;
- (id)initWithURL:(NSString*)URL withDelegate:(id<CatchDataDelegate>)delegate;
+ (id)catchDataWithURL:(NSString*)url withDelegate:(id<CatchDataDelegate>)delegate;
- (BOOL)isExistenceNetwork;
- (void)CatchDataWithURL:(NSString*)url;
@end
/*
@protocol CatchDataDelegate <NSObject>
@required
- (void)catchData:(CatchData*)catchData hasFinishCatchWithURL:(NSString*)url check:(BOOL)check;
@end
*/
CatchData.m
//
// CatchData.m
// ios
//
// Created by wxin9 on 11-10-12.
// Copyright 2011年 __MyCompanyName__. All rights reserved.
//
#import "CatchData.h"
#import "Reachability.h"
//#import "TTURLAPIResponse.h"
@implementation CatchData
@synthesize requestGet=_requestGet;
@synthesize urlString=_urlString;
@synthesize delegate=_delegate;
- (void)dealloc{
[super dealloc];
[self.requestGet cancel];
self.requestGet=nil;
self.urlString=nil;
self.delegate=nil;
}
- (id)init
{
self = [super init];
if (self) {
// Initialization code here.
}
return self;
}
- (id)initWithURL:(NSString*)URL withDelegate:(id<CatchDataDelegate>)delegate{
self=[super init];
if (self) {
self.urlString=URL;
self.delegate=delegate;
}
return self;
}
+ (id)catchDataWithURL:(NSString*)url withDelegate:(id<CatchDataDelegate>)delegate{
return [[[CatchData alloc] initWithURL:url withDelegate:delegate] autorelease];
}
- (BOOL)isExistenceNetwork{
BOOL isExistenceNetwork;
Reachability *r = [Reachability reachabilityWithHostName:@"www.apple.com"];
switch ([r currentReachabilityStatus]) {
case NotReachable:
isExistenceNetwork=NO;
break;
case ReachableViaWWAN:
isExistenceNetwork=YES;
break;
case ReachableViaWiFi:
isExistenceNetwork=YES;
break;
}
return isExistenceNetwork;
}
- (void)CatchDataWithURL:(NSString*)url{
if ([self isExistenceNetwork]==NO) {
return;
}
if (self.requestGet != nil) {
[self.requestGet cancel];
self.requestGet = nil;
}
TTURLRequest *request = [[TTURLRequest alloc] initWithURL:url delegate:self];
request.httpMethod = @"GET";
// TTURLAPIResponse *response = [[TTURLAPIResponse alloc] init];
// request.response = response;
// [response release];
self.requestGet = request;
[request release];
[request sendToNetwork];
}
#pragma mark - TTURLRequestDelegate
- (void)requestDidStartLoad:(TTURLRequest*)request{
}
- (void)requestDidFinishLoad:(TTURLRequest *)request{
if (request == self.requestGet) {
NSLog(@"request.URL==%@",request.URL);
self.urlString=request.URL;
[_delegate catchDataHasFinishCatchWithURL:self.urlString check:YES];
}
}
- (void)requestDidCancelLoad:(TTURLRequest *)request{
self.urlString=request.URL;
[_delegate catchDataHasFinishCatchWithURL:self.urlString check:NO];
}
- (void)request:(TTURLRequest *)request didFailLoadWithError:(NSError *)error{
[_delegate catchDataHasFinishCatchWithURL:self.urlString check:NO];
}
@end