// // JKNetworkSessionDelegate.m // Test Upload Progress // // Created by Jack on 2017/1/11. // Copyright © 2017年 mini1. All rights reserved. // #import "RANetworkTaskDelegate.h" @interface RANetworkTaskDelegate () @property (nonatomic,strong) NSMutableData *recvData; //@property (nonatomic,strong) NSMutableDictionary *result; @end @implementation RANetworkTaskDelegate + (instancetype)sharedInstance { RANetworkTaskDelegate *obj = nil; obj = [[RANetworkTaskDelegate alloc] init]; obj.recvData = [NSMutableData data]; // obj.result = [[JKNetworkResult alloc] init]; printf("new network delegate\n"); return obj; } #pragma mark - NSURLSessionTaskDelegate - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didSendBodyData:(int64_t)bytesSent totalBytesSent:(int64_t)totalBytesSent totalBytesExpectedToSend:(int64_t)totalBytesExpectedToSend { double progress = (double)totalBytesSent / totalBytesExpectedToSend; if (self.p) { self.p(task,progress); } } - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error { // if (self.decryptHandler) { // // self.result.decryptHandler = self.decryptHandler; // // } // // if (error) { // // self.result.error = error; // // NSLog(@"Delegate recv Error: %@",error.localizedDescription); // // } // // self.result.data = self.recvData; // // NSLog(@"Delegate recv data %@",self.recvData); // // // printf("net work complete\n"); if (self.r) { if(self.recvData==nil) { self.r(nil); return; } NSMutableString *str = [[NSMutableString alloc] initWithData:self.recvData encoding:NSUTF8StringEncoding]; NSLog(@"data string: %@",str); NSError *error1=nil; NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:self.recvData options:NSJSONReadingMutableLeaves error:&error1]; if(jsobj==nil)// 服务器返回不是json { jsobj=[NSMutableDictionary new]; [jsobj setValue:@"-30" forKey:@"result"]; [jsobj setValue:@"Can not upload to server, please contact administrator." forKey:@"msg"]; } self.r([jsobj mutableCopy]); } // [session invalidateAndCancel]; } #pragma mark - NSURLSessionDataDelegate - (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveResponse:(NSURLResponse *)response completionHandler:(void (^)(NSURLSessionResponseDisposition))completionHandler { NSLog(@"Delegate recv response: %@",response); // self.result.response = response; completionHandler(NSURLSessionResponseAllow); } - (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data { [self.recvData appendData:data]; } @end