|
//
// RemoteRequest.m
// codeChallengeDemo
//
// Created by Scar on 14-8-21.
// Copyright (c) 2014年 scar1900. All rights reserved.
//
#import "RemoteRequest.h"
#import "ASIHTTPRequest/ASIFormDataRequest.h"
#import "ASIHTTPRequest/Reachability.h"
#import <SystemConfiguration/SCNetworkReachability.h>
#import "Util.h"
@implementation Remote(Request)
+ (void)doJsonAction:(int)actionTag
requestUrl:(NSString*)requestUrl
parameter:(NSDictionary*)parameter
delegate:(id<RemoteDelegate>)delegate {
[[Remote instance] doJsonAction:actionTag
requestUrl:requestUrl
parameter:parameter
delegate:delegate];
}
+ (void)doJsonActionWithBlock:(int)actionTag
requestUrl:(NSString*)requestUrl
parameter:(NSDictionary*)parameter
withWaitCursor:(BOOL)isHaveCursor
completion:(void(^)(BOOL success,NSString *message,id responseData))completion {
[[Remote instance] doJsonActionWithBlock:actionTag
requestUrl:requestUrl
parameter:parameter
withWaitCursor:isHaveCursor
completion:completion];
}
+ (void)doSimpleAction:(int)actionTag
requestUrl:(NSString*)requestUrl {
[[Remote instance]doSimpleAction:actionTag requestUrl:requestUrl];
}
+ (void)doNoneJsonActionWithBlock:(int)actionTag
requestUrl:(NSString*)requestUrl
parameter:(NSDictionary*)parameter
withWaitCursor:(BOOL)isHaveCursor
completion:(void(^)(BOOL success,NSString *message,id responseData))completion {
[[Remote instance]doNoneJsonActionWithBlock:actionTag
requestUrl:requestUrl
parameter:parameter
withWaitCursor:isHaveCursor
completion:completion];
}
+ (void)downloadFileAsync:(NSString*)requestUrl
actionTag:(int)actionTag
filePath:(NSString*)filePath
delegate:(id<RemoteDelegate>)delegate {
[[Remote instance] downloadFileAsync:requestUrl
actionTag:actionTag
filePath:filePath
delegate:delegate];
}
+ (void)downloadFileAsyncWithBlock:(NSString*)requestUrl
actionTag:(int)actionTag
filePath:(NSString*)filePath
completion:(void(^)(BOOL success,NSString *message,id responseData))completion {
[[Remote instance] downloadFileAsyncWithBlock:requestUrl
actionTag:actionTag
filePath:filePath
completion:completion];
}
+ (void)downloadOfflineFileAsyncASI:(NSString*)requestUrl
actionTag:(int)actionTag
parameter:(NSDictionary*)parameter
fileName:(NSString*)fileName
delegate:(id<RemoteDelegate>)delegate {
[[Remote instance] downloadOfflineFileAsyncASI:requestUrl
actionTag:actionTag
parameter:(NSDictionary*)parameter
fileName:(NSString*)fileName
delegate:delegate];
}
+ (void)downloadOfflineFileAsyncURLSession:(NSString*)requestUrl
actionTag:(int)actionTag
parameter:(NSDictionary*)parameter
fileName:(NSString*)fileName
delegate:(id<RemoteDelegate>)delegate {
[[Remote instance] downloadOfflineFileAsyncURLSession:requestUrl
actionTag:actionTag
parameter:(NSDictionary*)parameter
fileName:(NSString*)fileName
delegate:delegate];
}
+ (void)upLoadImageAsyncWithBlock:(NSString*)requestUrl
actionTag:(int)actionTag
parameter:(NSDictionary*)parameter
image:(NSString*)fileName
completion:(void(^)(BOOL success,NSString *message,id responseData))completion{
[[Remote instance] upLoadImageAsyncWithBlock:requestUrl
actionTag:actionTag
parameter:parameter
image:fileName
completion:completion];
}
+ (void)doXmlRequestWithBlock:(NSString*)requestUrl
completion:(void(^)(BOOL success,NSString *message,id responseData))completion{
[[Remote instance] doXmlRequestWithBlock:requestUrl
completion:completion];
}
- (void)doSimpleAction:(int)actionTag
requestUrl:(NSString*)requestUrl {
@try {
NSURL *URL = nil;
URL = [NSURL URLWithString:requestUrl];;
if (![requestUrl hasPrefix:@"http://"]) {
NSLog(@"url有错误,请检查!");
return;
}
TPLOG(@"----JSON------ServerUrl=%@", URL.absoluteString);
// 组织报文头
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:URL];
[request setDelegate:self];
if (![self connectedToNetwork]) {
[self performSelector:@selector(onError:userInfo:)
withObject:noNetworkMessage
withObject:[request userInfo]];
[self performSelector:@selector(stopWaitCursor:)
withObject:request.userInfo];
return;
}
[request startAsynchronous];
}
@catch (NSException * e) {
TPLOG(@"-------NSException = %@----", e.reason);
}
}
- (void)doJsonAction:(int)actionTag
requestUrl:(NSString*)requestUrl
parameter:(NSDictionary*)parameter
delegate:(id<RemoteDelegate>)delegate {
NSMutableDictionary* userInfo = [NSMutableDictionary dictionary];
if (nil != delegate) {
[userInfo setObject:delegate forKey:@"delegate"];
}
[userInfo setObject:@(actionTag) forKey:@"actionTag"];
@try {
[self performSelector:@selector(startWaitCursor:) withObject:userInfo];
NSURL *URL = nil;
if (![requestUrl hasPrefix:@"http://"]) {
requestUrl = [RemoteURL stringByAppendingString:requestUrl];
URL = [NSURL URLWithString:requestUrl];
}else {
URL = [NSURL URLWithString:requestUrl];;
}
if (![requestUrl hasPrefix:@"http://"]) {
NSLog(@"url有错误,请检查!");
return;
}
TPLOG(@"----JSON------ServerUrl=%@", URL.absoluteString);
TPLOG(@"parameters:%@",parameter);
// 组织报文头
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:URL];
if (parameter) {
[parameter.allKeys enumerateObjectsUsingBlock:^(NSString *key, NSUInteger idx, BOOL *stop) {
if (parameter[key]) {
[request setPostValue:parameter[key] forKey:key];
}
}];
}else {
NSMutableData *data = [NSMutableData data];
[request setPostBody:data];
}
[request setUserInfo:userInfo];
[self setHeaderOfRequest:request];
[request setDidFinishSelector:@selector(jsonFinished:)];
[request setDelegate:self];
if ([delegate respondsToSelector:@selector(stopRemoteRequestWhenPop)]&&
[delegate respondsToSelector:@selector(setRequest:)]) {
[delegate performSelector:@selector(setRequest:) withObject:request];
}
// Reachability *r = [Reachability reachabilityWithHostName:@"www.baidu.com"];
// NetworkStatus netStatus = [r currentReachabilityStatus];
if (![self connectedToNetwork]) {
[self performSelector:@selector(onError:userInfo:)
withObject:noNetworkMessage
withObject:[request userInfo]];
[self performSelector:@selector(stopWaitCursor:)
withObject:request.userInfo];
return;
}
[request startAsynchronous];
}
@catch (NSException * e) {
TPLOG(@"-------NSException = %@----", e.reason);
}
}
- (void)doJsonActionWithBlock:(int)actionTag
requestUrl:(NSString*)requestUrl
parameter:(NSDictionary*)parameter
withWaitCursor:(BOOL)isHaveCursor
completion:(void(^)(BOOL success,NSString *message,id responseData))completion {
NSMutableDictionary* userInfo = [NSMutableDictionary dictionary];
[userInfo setObject:@(actionTag) forKey:@"actionTag"];
[userInfo setObject:completion forKey:@"completeHandler"];
@try {
if (isHaveCursor) {
[self performSelector:@selector(startWaitCursor:) withObject:userInfo];
}
NSURL *URL = nil;
if (![requestUrl hasPrefix:@"http://"]) {
requestUrl = [RemoteURL stringByAppendingString:requestUrl];
URL = [NSURL URLWithString:requestUrl];
}else {
URL = [NSURL URLWithString:requestUrl];
}
if (![requestUrl hasPrefix:@"http://"]) {
NSLog(@"url有错误,请检查!");
return;
}
TPLOG(@"----JSON------ServerUrl=%@", URL.absoluteString);
TPLOG(@"parameters:%@",parameter);
// 组织报文头
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:URL];
if (parameter) {
[parameter.allKeys enumerateObjectsUsingBlock:^(NSString *key, NSUInteger idx, BOOL *stop) {
if (parameter[key]) {
[request setPostValue:parameter[key] forKey:key];
}
}];
}else {
NSMutableData *data = [NSMutableData data];
[request setPostBody:data];
}
[request setUserInfo:userInfo];
[self setHeaderOfRequest:request];
[request setDidFinishSelector:@selector(jsonFinishedWithBlock:)];
[request setDelegate:self];
// Reachability *r = [Reachability reachabilityWithHostName:@"www.baidu.com"];
// NetworkStatus netStatus = [r currentReachabilityStatus];
if (![self connectedToNetwork]) {
[self performSelector:@selector(onError:userInfo:)
withObject:noNetworkMessage
withObject:[request userInfo]];
[self performSelector:@selector(stopWaitCursor:)
withObject:request.userInfo];
return;
}
[request startAsynchronous];
}
@catch (NSException * e) {
TPLOG(@"-------NSException = %@----", e.reason);
}
}
- (void)doNoneJsonActionWithBlock:(int)actionTag
requestUrl:(NSString*)requestUrl
parameter:(NSDictionary*)parameter
withWaitCursor:(BOOL)isHaveCursor
completion:(void(^)(BOOL success,NSString *message,id responseData))completion {
NSMutableDictionary* userInfo = [NSMutableDictionary dictionary];
[userInfo setObject:@(actionTag) forKey:@"actionTag"];
[userInfo setObject:completion forKey:@"completeHandler"];
@try {
if (isHaveCursor) {
[self performSelector:@selector(startWaitCursor:) withObject:userInfo];
}
NSURL *URL = nil;
if (![requestUrl hasPrefix:@"http://"]) {
requestUrl = [RemoteURL stringByAppendingString:requestUrl];
URL = [NSURL URLWithString:requestUrl];
}else {
URL = [NSURL URLWithString:requestUrl];
}
if (![requestUrl hasPrefix:@"http://"]) {
NSLog(@"url有错误,请检查!");
return;
}
TPLOG(@"----JSON------ServerUrl=%@", URL.absoluteString);
TPLOG(@"parameters:%@",parameter);
// 组织报文头
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:URL];
if (parameter) {
[parameter.allKeys enumerateObjectsUsingBlock:^(NSString *key, NSUInteger idx, BOOL *stop) {
if (parameter[key]) {
[request setPostValue:parameter[key] forKey:key];
}
}];
}else {
NSMutableData *data = [NSMutableData data];
[request setPostBody:data];
}
[request setUserInfo:userInfo];
[self setHeaderOfRequest:request];
[request setDidFinishSelector:@selector(noneJsonFinishedWithBlock:)];
[request setDelegate:self];
// Reachability *r = [Reachability reachabilityWithHostName:@"www.baidu.com"];
// NetworkStatus netStatus = [r currentReachabilityStatus];
if (![self connectedToNetwork]) {
[self performSelector:@selector(onError:userInfo:)
withObject:noNetworkMessage
withObject:[request userInfo]];
[self performSelector:@selector(stopWaitCursor:)
withObject:request.userInfo];
return;
}
[request startAsynchronous];
}
@catch (NSException * e) {
TPLOG(@"-------NSException = %@----", e.reason);
}
}
- (void)setHeaderOfRequest:(ASIHTTPRequest*)request {
[request setRequestMethod:@"POST"];
[request addRequestHeader:@"Content-Type" value:@"application/json; encoding=utf-8"];
[request addRequestHeader:@"Accept" value:@"application/json"];
[request addRequestHeader:@"WD-UUID" value:[TPUserDefault instance].uuid];
[request addRequestHeader:@"WD-RESOLUTION" value:[TPUserDefault instance].deviceResolution];
[request addRequestHeader:@"WD-CHANNEL" value:@"App Store"];
if (isPad) {
[request addRequestHeader:@"WD-CLIENT-TYPE" value:@"01"];
}else {
[request addRequestHeader:@"WD-CLIENT-TYPE" value:@"03"];
}
[request addRequestHeader:@"WD-SYSTEM" value:[TPUserDefault instance].systemInfo];
[request addRequestHeader:@"WD-VERSION" value:[TPUserDefault instance].appVersion];
if ([TPUserDefault instance].deviceUA && !isBlankString([TPUserDefault instance].deviceUA)) {
[request addRequestHeader:@"WD-UA" value:[TPUserDefault instance].deviceUA];
}
if ([TPUserDefault instance].userBO) {
[request addRequestHeader:@"userId" value:[(NSNumber*)[TPUserDefault instance].userBO.userId stringValue]];
[request addRequestHeader:@"WD-TOKEN" value:[TPUserDefault instance].userBO.token];
}
}
- (void)downloadFileAsync:(NSString*)requestUrl
actionTag:(int)actionTag
filePath:(NSString*)filePath
delegate:(id<RemoteDelegate>)delegate {
NSMutableDictionary* userInfo = [NSMutableDictionary dictionary];
[userInfo setObject:delegate forKey:@"delegate"];
[userInfo setObject:filePath forKey:@"fileName"];
[userInfo setObject:[NSNumber numberWithInt:actionTag] forKey:@"actionTag"];
@try {
//开始等待光标
[self performSelector:@selector(startWaitCursor:) withObject:userInfo];
NSURL *URL = nil;
if ([requestUrl hasPrefix:@"http://"]) {
URL = [NSURL URLWithString:requestUrl];
}else {
TPLOG(@"所给下载链接有错误!");
return;
}
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:URL];
// 组织报文头
[request setRequestMethod:@"GET"];
[request setUserInfo:userInfo];
[request setDelegate:self];
[request setDidFinishSelector:@selector(DownloadFinish:)];
[request setDownloadDestinationPath:filePath];
if ([delegate respondsToSelector:@selector(stopRemoteRequestWhenPop)]&&
[delegate respondsToSelector:@selector(setRequest:)]) {
[delegate performSelector:@selector(setRequest:) withObject:request];
}
[request startAsynchronous];
}
@catch (NSException * e) {
TPLOG(@"-------NSException = %@----", e.reason);
}
}
- (void)downloadFileAsyncWithBlock:(NSString*)requestUrl
actionTag:(int)actionTag
filePath:(NSString*)filePath
completion:(void(^)(BOOL success,NSString *message,id responseData))completion {
NSMutableDictionary* userInfo = [NSMutableDictionary dictionary];
[userInfo setObject:filePath forKey:@"fileName"];
[userInfo setObject:[NSNumber numberWithInt:actionTag] forKey:@"actionTag"];
@try {
// //开始等待光标
// [self performSelector:@selector(startWaitCursor:) withObject:userInfo];
self.downloadFinishHanlder = completion;
NSURL *URL = nil;
if ([requestUrl hasPrefix:@"http://"]) {
URL = [NSURL URLWithString:requestUrl];
}else {
TPLOG(@"所给下载链接有错误!");
return;
}
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:URL];
// 组织报文头
[request setRequestMethod:@"GET"];
[request setUserInfo:userInfo];
[request setDelegate:self];
[request setDidFinishSelector:@selector(DownloadFinishWithBlock:)];
[request setDownloadDestinationPath:filePath];
[request startAsynchronous];
}
@catch (NSException * e) {
TPLOG(@"-------NSException = %@----", e.reason);
}
}
- (void)downloadOfflineFileAsyncASI:(NSString*)requestUrl
actionTag:(int)actionTag
parameter:(NSDictionary*)parameter
fileName:(NSString*)fileName
delegate:(id<RemoteDelegate>)delegate {
NSMutableDictionary* userInfo = [NSMutableDictionary dictionary];
[userInfo setObject:delegate forKey:@"delegate"];
[userInfo setObject:fileName forKey:@"fileName"];
[userInfo setObject:[NSNumber numberWithInt:actionTag] forKey:@"actionTag"];
@try {
if (ExistAtPath(ConfigPath(fileName))) {
[self performSelector:@selector(onError:userInfo:)
withObject:@"已存在该文件"
withObject:userInfo];
return;
}
NSURL *URL = nil;
if (![requestUrl hasPrefix:@"http://"]) {
requestUrl = [RemoteURL stringByAppendingString:requestUrl];
URL = [NSURL URLWithString:requestUrl];
}else {
URL = [NSURL URLWithString:requestUrl];;
}
if (![requestUrl hasPrefix:@"http://"]) {
NSLog(@"url有错误,请检查!");
return;
}
if (![self connectedToNetwork]) {
[self performSelector:@selector(onError:userInfo:)
withObject:noNetworkMessage
withObject:userInfo];
[self performSelector:@selector(stopWaitCursor:)
withObject:userInfo];
return;
}
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:URL];
[request setShouldContinueWhenAppEntersBackground:YES];
[request setDownloadDestinationPath:ConfigPath(fileName)];
TPLOG(@"downloadPath:%@",ConfigPath(fileName));
[request setTemporaryFileDownloadPath:tempPath(fileName)];
[request setAllowResumeForFileDownloads:YES];
[request setDelegate:self];
[request setDownloadProgressDelegate:self];
[request setRequestMethod:@"GET"];
[request setUserInfo:userInfo];
[request setDidFinishSelector:@selector(offlineDownloadFinished:)];
if ([delegate respondsToSelector:@selector(setRequest:)]) {
[delegate performSelector:@selector(setRequest:) withObject:request];
}
[self.remoteQueue addOperation:request];
}
@catch (NSException *exception) {
TPLOG(@"-------NSException = %@----", exception.reason);
}
}
- (void)downloadOfflineFileAsyncURLSession:(NSString*)requestUrl
actionTag:(int)actionTag
parameter:(NSDictionary*)parameter
fileName:(NSString*)fileName
delegate:(id<RemoteDelegate>)delegate {
NSMutableDictionary* userInfo = [NSMutableDictionary dictionary];
[userInfo setObject:delegate forKey:@"delegate"];
[userInfo setObject:fileName forKey:@"fileName"];
[userInfo setObject:[NSNumber numberWithInt:actionTag] forKey:@"actionTag"];
@try {
if (ExistAtPath(ConfigPath(fileName))) {
[self performSelector:@selector(onError:userInfo:)
withObject:@"已存在该文件"
withObject:userInfo];
return;
}
NSURL *URL = nil;
if (![requestUrl hasPrefix:@"http://"]) {
requestUrl = [RemoteURL stringByAppendingString:requestUrl];
URL = [NSURL URLWithString:requestUrl];
}else {
URL = [NSURL URLWithString:requestUrl];;
}
if (![requestUrl hasPrefix:@"http://"]) {
NSLog(@"url有错误,请检查!");
return;
}
if (![self connectedToNetwork]) {
[self performSelector:@selector(onError:userInfo:)
withObject:noNetworkMessage
withObject:userInfo];
[self performSelector:@selector(stopWaitCursor:)
withObject:userInfo];
return;
}
NSURLRequest *request = [NSURLRequest requestWithURL:URL];
// NSURLSessionDownloadTask *task = [[Remote session] downloadTaskWithRequest:request completionHandler:^(NSURL *location, NSURLResponse *response, NSError *error) {
// [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];
// TPLOG(@"Download success for URL: %@",location.description);
//
// }];
NSURLSessionDownloadTask *task = [[Remote session] downloadTaskWithRequest:request];
[userInfo setValue:task forKey:@"task"];
//将请求信息加入缓存
if (self.sessionTaskList.count > 0) {
__block BOOL isHave = NO;
__block NSURLSessionDownloadTask* resumeTask = nil;
[self.sessionTaskList enumerateObjectsUsingBlock:^(NSMutableDictionary* obj, NSUInteger idx, BOOL *stop) {
if ([obj[@"actionTag"] intValue] == actionTag) {
if (obj[@"partialData"]) {
resumeTask = [[Remote session] downloadTaskWithResumeData:obj[@"partialData"]];
[obj setValue:resumeTask forKey:@"task"];
}else {
[obj setValue:task forKey:@"task"];
}
isHave = YES;
}
}];
if (!isHave) {
[self.sessionTaskList addObject:userInfo];
[task resume];
}else {
if (resumeTask) {
[resumeTask resume];
}else {
[task resume];
}
}
}else {
NSMutableDictionary *dic = [TPUserDefault instance].pauseDataDic;
NSString *actionTagStr = [NSString stringWithFormat:@"%d",actionTag];
if (dic[actionTagStr]) {
[self.sessionTaskList addObject:userInfo];
NSURLSessionDownloadTask *resumeTask = [[Remote session] downloadTaskWithResumeData:dic[actionTagStr]];
[resumeTask resume];
}else {
[self.sessionTaskList addObject:userInfo];
[task resume];
}
}
}
@catch (NSException *exception) {
TPLOG(@"-------NSException = %@----", exception.reason);
}
}
- (void)upLoadImageAsyncWithBlock:(NSString*)requestUrl
actionTag:(int)actionTag
parameter:(NSDictionary*)parameter
image:(NSString*)fileName
completion:(void(^)(BOOL success,NSString *message,id responseData))completion {
NSMutableDictionary* userInfo = [NSMutableDictionary dictionary];
[userInfo setObject:@(actionTag) forKey:@"actionTag"];
[userInfo setObject:completion forKey:@"completeHandler"];
@try {
[self performSelector:@selector(startWaitCursor:) withObject:userInfo];
NSURL *URL = nil;
if (![requestUrl hasPrefix:@"http://"]) {
requestUrl = [RemoteURL stringByAppendingString:requestUrl];
URL = [NSURL URLWithString:requestUrl];
}else {
URL = [NSURL URLWithString:requestUrl];
}
if (![requestUrl hasPrefix:@"http://"]) {
NSLog(@"url有错误,请检查!");
return;
}
TPLOG(@"----JSON------ServerUrl=%@", URL.absoluteString);
TPLOG(@"parameters:%@",parameter);
// 组织报文头
if (parameter) {
__block NSString *urlStr = requestUrl;
[parameter.allKeys enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
if (idx==0) {
urlStr = [requestUrl stringByAppendingString:[NSString stringWithFormat:@"?%@=",obj]];
urlStr = [urlStr stringByAppendingString:parameter[obj]];
}else {
urlStr = [urlStr stringByAppendingString:[NSString stringWithFormat:@"&%@=",obj]];
urlStr = [urlStr stringByAppendingString:parameter[obj]];
}
}];
requestUrl = urlStr;
}
URL = [NSURL URLWithString:requestUrl];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:URL];
[self setHeaderOfRequest:request];
if (!isBlankString(fileName))
{
[request appendPostDataFromFile:fileName];
}
[request setUserInfo:userInfo];
[request setDidFinishSelector:@selector(imageUpLoadFinished:)];
[request setDelegate:self];
if (![self connectedToNetwork]) {
[self performSelector:@selector(onError:userInfo:)
withObject:noNetworkMessage
withObject:[request userInfo]];
[self performSelector:@selector(stopWaitCursor:)
withObject:request.userInfo];
return;
}
[request startAsynchronous];
}
@catch (NSException * e) {
TPLOG(@"-------NSException = %@----", e.reason);
}
}
- (void)doXmlRequestWithBlock:(NSString*)requestUrl
completion:(void(^)(BOOL success,NSString *message,id responseData))completion{
NSMutableDictionary* userInfo = [NSMutableDictionary dictionary];
[userInfo setObject:completion forKey:@"completeHandler"];
@try {
NSURL *URL = nil;
URL = [NSURL URLWithString:requestUrl];
if (![requestUrl hasPrefix:@"http://"]) {
NSLog(@"url有错误,请检查!");
return;
}
TPLOG(@"----JSON------ServerUrl=%@", URL.absoluteString);
// 组织报文头
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:URL];
[self setHeaderOfRequest:request];
[request setUserInfo:userInfo];
[request setDidFinishSelector:@selector(xmlRequestFinished:)];
[request setDelegate:self];
if (![self connectedToNetwork]) {
[self performSelector:@selector(onError:userInfo:)
withObject:noNetworkMessage
withObject:[request userInfo]];
[self performSelector:@selector(stopWaitCursor:)
withObject:request.userInfo];
return;
}
[request startAsynchronous];
}
@catch (NSException * e) {
TPLOG(@"-------NSException = %@----", e.reason);
}
}
@end
|