ASIFormDataRequest的POST操作架构设计,方法由自己定义。
//开启iphone网络开关
[UIApplication sharedApplication].networkActivityIndicator
ASIFormDataRequest *request = [[ASIFormDataRequest alloc] initWithURL:[NSURLURLWithString:host]]; //超时时间
request.timeOutSeconds = 30;
//定义异步方法
[request setDelegate:self]; [request setDidFailSelector:@selector(requestDidFailed:)]; [request setDidFinishSelector:@selector(requestDidSuccess:)];
//用户自定义数据 request.userInfo = [NSDictionary dictionaryWithObject:method forKey:@"Method"]; //post的数据
[request appendPostData:[body dataUsingEncoding:NSUTF8StringEncoding]];
//开始执行
[request startAsynchronous];
//执行成功
- (void)requestDidSuccess:(ASIFormDataRequest *)request { //获取头文件 NSDictionary *headers = [request responseHeaders];
//获取http协议执行代码 NSLog(@"Code:%d",[request responseStatusCode]);
if ([delegaterespondsToSelector:@selector(OARequestSuccessed:withResponse:WithData:withHeaders:)]) {
//执行委托操作 [delegate OARequestSuccessed:method withResponse:[request responseString] WithData:[request responseData] withHeaders:headers];
}
//清空 if (request) { [request release]; }
//关闭网络
[UIApplication sharedApplication].networkActivityIndicator
//执行失败
- (void)requestDidFailed:(ASIFormDataRequest *)request{ //获取的用户自定义内容 NSString *method = [request.userInfo objectForKey:@"Method"]; //获取错误数据 NSError *error = [request error];
if ([delegate respondsToSelector:@selector(OARequestFailed:withError:)]) {
//执行委托 将错误数据传其他方式(架构设计 [delegate OARequestFailed:method withError:error]; }
if (request) { [request release]; }
[UIApplication sharedApplication].networkActivityIndicator }
//执行成功函数
- (void)OARequestSuccessed:(NSString *)method withResponse:(NSString *)response WithData:(NSData *)data withHeaders:(NSDictionary *)headers {
NSString *responseStr = [[[NSString alloc] initWithData:dataencoding:NSUTF8StringEncoding] autorelease]; //服务返回post后的数据 NSLog(@"response:\n%@",responseStr); }
//执行失败函数
- (void)OARequestFailed:(NSString *)method withError:(NSError *)error {
NSLog(@"Error:%@",error);
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"出错了" message:@"网络连接失败, 请稍后重试." delegate:nil cancelButtonTitle:@"好的" otherButtonTitles:nil]; [alert show]; [alert release]; }
|