Explorar el Código

修复Apex Mobile 文档查询结果列表,文档类型显示不全的问题。
调试Apex Mobile 文档下载功能。
调试Apex Mobile search 带参数查询后报错的问题,目前只定位到使用新接口访问后台时,返回为空,原因还没找到,需要和后台联调。
次为中间版本,问题较多!!!

Ray Zhang hace 6 años
padre
commit
2a1d41e2b1

+ 89 - 54
Apex Mobile/Apex Mobile/DetailPageViewController.m

@@ -601,68 +601,103 @@
     
     [self presentViewController: alertController animated: YES completion: nil];
     
-    // download
-    dispatch_async(dispatch_get_global_queue(0, 0), ^{
-        
-        //        NSArray *paths = NSSearchPathForDirectoriesInDomains(nstem, NSUserDomainMask, YES);
-        //        NSString *documents = [paths objectAtIndex:0];
-        //        NSString *cacheDir = [documents stringByAppendingPathComponent:[module_name stringByAppendingString:@"_download"]];
-        
-        NSString *cacheDir = NSTemporaryDirectory();
-        
-        if (![[NSFileManager defaultManager] fileExistsAtPath:cacheDir]) {
-            [[NSFileManager defaultManager] createDirectoryAtPath:cacheDir withIntermediateDirectories:NO attributes:nil error:nil];
-        }
-        
-        //        NSString *path = [cacheDir stringByAppendingPathComponent:[NSUUID UUID].UUIDString];
-        
-        
-        
-        [RANetwork download_file:nil url:url toCachePath:cacheDir progressHandler:^(NSURLSessionTask *task, double progress) {
+    
+    
+    [RANetwork request_download:nil  url:url completionHandler:^(NSMutableDictionary *result) {
+        weakSelf.documentPath = nil;
+        [alertController dismissViewControllerAnimated:YES completion:^{
             
-            DebugLog(@"download progress %f",progress);
-        } completionHandler:^(NSMutableDictionary *result) {
             
-            dispatch_async(dispatch_get_main_queue(), ^{
+            if ([[result objectForKey:@"result"] intValue] == RESULT_TRUE) {
                 
-                weakSelf.documentPath = nil;
-                [alertController dismissViewControllerAnimated:YES completion:^{
-                    
-                    
-                    if ([[result objectForKey:@"result"] intValue] == RESULT_TRUE) {
-                        
-                        NSString *cachePath = [result objectForKey:@"path"];
-                        weakSelf.documentPath = cachePath;
-                        
-                        if (cachePath) { // push 必须在completion中
-                            [weakSelf.navigationController pushViewController:weakSelf.quickLook animated:YES];
-                        }
-                        
-                    } else {
-                        
-                        NSString *msg = [result objectForKey:@"msg"];
-                        
-                        UIAlertController *alertVC = [UIAlertController alertControllerWithTitle: @"Warning"
-                                                                                         message: msg
-                                                                                  preferredStyle: UIAlertControllerStyleAlert];
-                        UIAlertAction *action = [UIAlertAction actionWithTitle:@"Ok" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
-                            
-                        }];
-                        [alertVC addAction:action];
-                        [weakSelf presentViewController:alertVC animated:YES completion:nil];
-                    }
-                    
-                }];
+                NSString *cachePath = [result objectForKey:@"path"];
+                weakSelf.documentPath = cachePath;
+                
+                if (cachePath) { // push 必须在completion中
+                    [weakSelf.navigationController pushViewController:weakSelf.quickLook animated:YES];
+                }
                 
+            } else {
                 
-            });
-            
-            DebugLog(@"download result %@",result);
+                NSString *msg = [result objectForKey:@"msg"];
+                
+                UIAlertController *alertVC = [UIAlertController alertControllerWithTitle: @"Warning"
+                                                                                 message: msg
+                                                                          preferredStyle: UIAlertControllerStyleAlert];
+                UIAlertAction *action = [UIAlertAction actionWithTitle:@"Ok" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
+                    
+                }];
+                [alertVC addAction:action];
+                [weakSelf presentViewController:alertVC animated:YES completion:nil];
+            }
             
         }];
         
-        
-    });
+    }];
+    
+//    
+//    // download
+//    dispatch_async(dispatch_get_global_queue(0, 0), ^{
+//        
+//        //        NSArray *paths = NSSearchPathForDirectoriesInDomains(nstem, NSUserDomainMask, YES);
+//        //        NSString *documents = [paths objectAtIndex:0];
+//        //        NSString *cacheDir = [documents stringByAppendingPathComponent:[module_name stringByAppendingString:@"_download"]];
+//        
+//        NSString *cacheDir = NSTemporaryDirectory();
+//        
+//        if (![[NSFileManager defaultManager] fileExistsAtPath:cacheDir]) {
+//            [[NSFileManager defaultManager] createDirectoryAtPath:cacheDir withIntermediateDirectories:NO attributes:nil error:nil];
+//        }
+//        
+//        //        NSString *path = [cacheDir stringByAppendingPathComponent:[NSUUID UUID].UUIDString];
+//        
+//        
+//        
+//        [RANetwork download_file:nil url:url toCachePath:cacheDir progressHandler:^(NSURLSessionTask *task, double progress) {
+//            
+//            DebugLog(@"download progress %f",progress);
+//        } completionHandler:^(NSMutableDictionary *result) {
+//            
+//            dispatch_async(dispatch_get_main_queue(), ^{
+//                
+//                weakSelf.documentPath = nil;
+//                [alertController dismissViewControllerAnimated:YES completion:^{
+//                    
+//                    
+//                    if ([[result objectForKey:@"result"] intValue] == RESULT_TRUE) {
+//                        
+//                        NSString *cachePath = [result objectForKey:@"path"];
+//                        weakSelf.documentPath = cachePath;
+//                        
+//                        if (cachePath) { // push 必须在completion中
+//                            [weakSelf.navigationController pushViewController:weakSelf.quickLook animated:YES];
+//                        }
+//                        
+//                    } else {
+//                        
+//                        NSString *msg = [result objectForKey:@"msg"];
+//                        
+//                        UIAlertController *alertVC = [UIAlertController alertControllerWithTitle: @"Warning"
+//                                                                                         message: msg
+//                                                                                  preferredStyle: UIAlertControllerStyleAlert];
+//                        UIAlertAction *action = [UIAlertAction actionWithTitle:@"Ok" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
+//                            
+//                        }];
+//                        [alertVC addAction:action];
+//                        [weakSelf presentViewController:alertVC animated:YES completion:nil];
+//                    }
+//                    
+//                }];
+//                
+//                
+//            });
+//            
+//            DebugLog(@"download result %@",result);
+//            
+//        }];
+//        
+//        
+//    });
     
 }
 #pragma mark - WKNavigationDelegate

+ 1 - 0
Apex Mobile/Apex Mobile/RANetwork.h

@@ -68,4 +68,5 @@
 +(void) request_retrievepassword : (NSString*) user  email:(NSString*) email completionHandler:(resultHandler)result;
 + (void)request_sendemail:(NSString *)email CC:(NSString *)cc SerialNo:(NSString *)serialNo completionHandler:(resultHandler)result;
 + (void)request_uploadsql:(NSString *)sql completionHandler:(resultHandler)result;
++ (void)request_download:(NSMutableDictionary *)params url:(NSString *)url completionHandler:(resultHandler)result;
 @end

+ 3 - 2
Apex Mobile/Apex Mobile/RANetwork.m

@@ -2427,7 +2427,7 @@
     
     params[@"action"]=@"handset_search";
     
-    [self request_interface:URL_SEARCH_RESULT parameters:params err_record_url:nil completionHandler:^(NSMutableDictionary *resultjson) {
+    [self request_interface_d:URL_SEARCH_RESULT parameters:params err_record_url:nil completionHandler:^(NSMutableDictionary *resultjson) {
             NSMutableDictionary *resultDic = resultjson;
         
             // detail data in local database
@@ -2643,7 +2643,8 @@
 //    return resultDic;
 }
 
-+ (void)request_download:(NSMutableDictionary *)params url:(NSString *)url toCachePath:(NSString *)path progressHandler:(progressHandler)progressHandler completionHandler:(resultHandler)result {
++ (void)request_download:(NSMutableDictionary *)params url:(NSString *)url completionHandler:(resultHandler)result
+{
 //    params = [self prepare_addtional_params:params];
     [NetworkUtils request_file:url parameters:params err_record_url:nil completionHandler:result];
     

+ 3 - 3
Apex Mobile/Apex Mobile/Result/Cell/ApexResultDocumentCell.xib

@@ -28,7 +28,7 @@
                                 </constraints>
                             </imageView>
                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="252" text="File:2018" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="yj3-N6-PFN">
-                                <rect key="frame" x="66" y="10" width="448" height="20.5"/>
+                                <rect key="frame" x="66" y="10" width="443" height="20.5"/>
                                 <fontDescription key="fontDescription" type="boldSystem" pointSize="17"/>
                                 <nil key="textColor"/>
                                 <nil key="highlightedColor"/>
@@ -40,9 +40,9 @@
                                 <nil key="highlightedColor"/>
                             </label>
                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="F/L" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="cse-Lk-XCd">
-                                <rect key="frame" x="522" y="10" width="30" height="21"/>
+                                <rect key="frame" x="517" y="10" width="35" height="21"/>
                                 <constraints>
-                                    <constraint firstAttribute="width" constant="30" id="1Kb-OI-L1N"/>
+                                    <constraint firstAttribute="width" constant="35" id="1Kb-OI-L1N"/>
                                 </constraints>
                                 <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                 <nil key="textColor"/>

+ 103 - 100
Apex Mobile/Apex Mobile/Result/Presenter/ApexResultPresenter.m

@@ -105,90 +105,90 @@ static const NSInteger detal = 20;
     
     __weak typeof(self) weakSelf = self;
     
-    
-    NSMutableDictionary *params = [self.params mutableCopy];
-    [params setObject:[NSNumber numberWithInteger:offset] forKey:@"offset"];
-    [params setObject:[NSNumber numberWithInteger:detal] forKey:@"limit"];
-    [params setObject:displayFields forKey:@"columns"];
-    
-    
-    [RANetwork request_result:params completionHandler:^(NSMutableDictionary *result) {
-        
-        NSMutableDictionary * json = result;
-            __strong typeof(weakSelf) strongSelf = weakSelf;
-            
-            int resultcode = [[json objectForKey:@"result"] intValue];
-            if (resultcode == RESULT_TRUE) {
-                
-                NSMutableArray *modelsArr = [NSMutableArray array];
-                if (option == ApexResultFetchDataTypeLoadMore && strongSelf.dataArray != nil && strongSelf.dataArray.count > 0) {
-                    [modelsArr addObjectsFromArray:strongSelf.dataArray];
-                }
-                
-                NSArray *items = [json objectForKey:@"items"];
-                for (NSDictionary *item in items) {
-                    
-                    NSInteger type = [[item objectForKey:@"type"] integerValue];
-                    
-                    switch (type) {
-                        case ApexResultTypeBooking: {
-                            ApexResultBookingModel *model = [ApexResultBookingModel new];
-                            [model setValuesForKeysWithDictionary:item];
-                            [modelsArr addObject:model];
-                        }
-                            break;
-                        case ApexResultTypeBLInfo: {
-                            ApexResultBLInfoModel *model = [ApexResultBLInfoModel new];
-                            [model setValuesForKeysWithDictionary:item];
-                            [modelsArr addObject:model];
-                        }
-                            break;
-                        case ApexResultTypeContainer: {
-                            ApexResultContainerModel *model = [ApexResultContainerModel new];
-                            [model setValuesForKeysWithDictionary:item];
-                            [modelsArr addObject:model];
-                        }
-                            break;
-                        case ApexResultTypeDocument: {
-                            ApexResultDocumentModel *model = [ApexResultDocumentModel new];
-                            [model setValuesForKeysWithDictionary:item];
-                            [modelsArr addObject:model];
-                        }
-                            break;
-                        default:
-                            break;
-                    }
-                    
-                } // for
-                strongSelf.offset = modelsArr.count;
-                
-                NSString *title = [json objectForKey:@"title"];
-                strongSelf.rowActions = [json objectForKey:@"row_actions"];
-                strongSelf.actions = [json objectForKey:@"actions"];
-                
-                // menu
-                NSArray *menuArr = [json objectForKey:@"menu"];
-                if (menuArr) {
-                    NSMutableArray *tmpArr = [NSMutableArray array];
-                    for (NSDictionary *item in menuArr) {
-                        
-                        ApexResultMenuItem *menuItem = [ApexResultMenuItem new];
-                        [menuItem setValuesForKeysWithDictionary:item];
-                        [tmpArr addObject:menuItem];
-                    }
-                    strongSelf.menuItems = [tmpArr copy];
-                }
-                
-                // refresh UI
-                [strongSelf loadDataSuccessWithTitle:title itemsArray:modelsArr itemCount:items.count];
-                
-            } else {
-                [strongSelf loadDataFailed];
-            }
-        
-    }];
-    
-    return;
+//    
+//    NSMutableDictionary *params = [self.params mutableCopy];
+//    [params setObject:[NSNumber numberWithInteger:offset] forKey:@"offset"];
+//    [params setObject:[NSNumber numberWithInteger:detal] forKey:@"limit"];
+//    [params setObject:displayFields forKey:@"columns"];
+//    
+//    
+//    [RANetwork request_result:params completionHandler:^(NSMutableDictionary *result) {
+//        
+//        NSMutableDictionary * json = result;
+//            __strong typeof(weakSelf) strongSelf = weakSelf;
+//            
+//            int resultcode = [[json objectForKey:@"result"] intValue];
+//            if (resultcode == RESULT_TRUE) {
+//                
+//                NSMutableArray *modelsArr = [NSMutableArray array];
+//                if (option == ApexResultFetchDataTypeLoadMore && strongSelf.dataArray != nil && strongSelf.dataArray.count > 0) {
+//                    [modelsArr addObjectsFromArray:strongSelf.dataArray];
+//                }
+//                
+//                NSArray *items = [json objectForKey:@"items"];
+//                for (NSDictionary *item in items) {
+//                    
+//                    NSInteger type = [[item objectForKey:@"type"] integerValue];
+//                    
+//                    switch (type) {
+//                        case ApexResultTypeBooking: {
+//                            ApexResultBookingModel *model = [ApexResultBookingModel new];
+//                            [model setValuesForKeysWithDictionary:item];
+//                            [modelsArr addObject:model];
+//                        }
+//                            break;
+//                        case ApexResultTypeBLInfo: {
+//                            ApexResultBLInfoModel *model = [ApexResultBLInfoModel new];
+//                            [model setValuesForKeysWithDictionary:item];
+//                            [modelsArr addObject:model];
+//                        }
+//                            break;
+//                        case ApexResultTypeContainer: {
+//                            ApexResultContainerModel *model = [ApexResultContainerModel new];
+//                            [model setValuesForKeysWithDictionary:item];
+//                            [modelsArr addObject:model];
+//                        }
+//                            break;
+//                        case ApexResultTypeDocument: {
+//                            ApexResultDocumentModel *model = [ApexResultDocumentModel new];
+//                            [model setValuesForKeysWithDictionary:item];
+//                            [modelsArr addObject:model];
+//                        }
+//                            break;
+//                        default:
+//                            break;
+//                    }
+//                    
+//                } // for
+//                strongSelf.offset = modelsArr.count;
+//                
+//                NSString *title = [json objectForKey:@"title"];
+//                strongSelf.rowActions = [json objectForKey:@"row_actions"];
+//                strongSelf.actions = [json objectForKey:@"actions"];
+//                
+//                // menu
+//                NSArray *menuArr = [json objectForKey:@"menu"];
+//                if (menuArr) {
+//                    NSMutableArray *tmpArr = [NSMutableArray array];
+//                    for (NSDictionary *item in menuArr) {
+//                        
+//                        ApexResultMenuItem *menuItem = [ApexResultMenuItem new];
+//                        [menuItem setValuesForKeysWithDictionary:item];
+//                        [tmpArr addObject:menuItem];
+//                    }
+//                    strongSelf.menuItems = [tmpArr copy];
+//                }
+//                
+//                // refresh UI
+//                [strongSelf loadDataSuccessWithTitle:title itemsArray:modelsArr itemCount:items.count];
+//                
+//            } else {
+//                [strongSelf loadDataFailed];
+//            }
+//        
+//    }];
+//    
+//    return;
     
     dispatch_async(dispatch_get_global_queue(0, 0), ^{
         
@@ -384,7 +384,9 @@ static const NSInteger detal = 20;
     if (![[NSFileManager defaultManager] fileExistsAtPath:cacheDir]) {
         [[NSFileManager defaultManager] createDirectoryAtPath:cacheDir withIntermediateDirectories:NO attributes:nil error:nil];
     }
-    [RANetwork request_file:url parameters:[params mutableCopy] err_record_url:nil completionHandler:^(NSMutableDictionary *result) {
+    
+
+    [RANetwork request_download:[params mutableCopy]  url:url completionHandler:^(NSMutableDictionary *result) {
         if (self.delegate) {
             [self.delegate onStopLoading];
 
@@ -400,48 +402,49 @@ static const NSInteger detal = 20;
                 NSString *msg = [result objectForKey:@"msg"];
                 [self.delegate onFailed:msg];
             }
-        };
+        };;
     }];
+
     return;
-//    
-//    
+//
+//
 //    dispatch_async(dispatch_get_global_queue(0, 0), ^{
-//        
+//
 //        NSString *cacheDir = NSTemporaryDirectory();
-//        
+//
 //        if (![[NSFileManager defaultManager] fileExistsAtPath:cacheDir]) {
 //            [[NSFileManager defaultManager] createDirectoryAtPath:cacheDir withIntermediateDirectories:NO attributes:nil error:nil];
 //        }
 //
-//        
+//
 //        [RANetwork download_file:[params mutableCopy] url:url toCachePath:cacheDir progressHandler:^(NSURLSessionTask *task, double progress) {
-//            
+//
 //            DebugLog(@"download progress %f",progress);
 //        } completionHandler:^(NSMutableDictionary *result) {
-//            
+//
 //            dispatch_async(dispatch_get_main_queue(), ^{
-//                
+//
 //                if (self.delegate) {
 //                    [self.delegate onStopLoading];
 //
 //                    self.documentPath = nil;
 //                    if ([[result objectForKey:@"result"] intValue] == RESULT_TRUE) {
-//                        
+//
 //                        NSString *cachePath = [result objectForKey:@"path"];
 //                        self.documentPath = cachePath;
 //                        [self.delegate onDownloadFile:cachePath];
-//                        
+//
 //                    } else {
-//                        
+//
 //                        NSString *msg = [result objectForKey:@"msg"];
 //                        [self.delegate onFailed:msg];
 //                    }
 //                }
-//                
+//
 //            }); // main queue
-//            
+//
 //        }]; // network
-//        
+//
 //    }); // global queue
 }
 

+ 1 - 1
common/FileCache.m

@@ -88,7 +88,7 @@
     path=[path stringByReplacingOccurrencesOfString:@"http://" withString:@""];
     //    path=[path stringByReplacingOccurrencesOfString:filename withString:@""];
     
-    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+//    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
     
 //    if(appDelegate.bEnable_Cache==false)
 //        return nil;

+ 1 - 0
common/NetworkUtils.h

@@ -34,4 +34,5 @@ typedef void(^dataHandler)(NSData *data);
 // 普通请求
 +(NSData*)request_interface : (NSString*) url parameters:(NSMutableDictionary *) params  err_record_url:(NSString* )recorder_url completionHandler:(resultHandler)result retry:(int) retry;
 +(NSData*)request_file : (NSString*) url parameters:(NSMutableDictionary *) params  err_record_url:(NSString* )recorder_url completionHandler:(resultHandler)result;
++(NSData*)request_interface_d : (NSString*) url parameters:(NSMutableDictionary *) params  err_record_url:(NSString* )recorder_url completionHandler:(resultHandler)result retry:(int) retry;
 @end

+ 354 - 2
common/NetworkUtils.m

@@ -141,7 +141,7 @@ repeat:
         //http method
         [request setHTTPMethod:@"POST"];
         
-        
+        NSLog([[NSString alloc] initWithData:myRequestData encoding:NSUTF8StringEncoding]);
         NSHTTPURLResponse* urlResponse = nil;
         
         NSError *error = nil;
@@ -571,7 +571,359 @@ repeat:
     return params;
 }
 
++(NSData*)request_interface_d : (NSString*) url parameters:(NSMutableDictionary *) params  err_record_url:(NSString* )recorder_url completionHandler:(resultHandler)result retry:(int) retry
+{
+//    __block int retry = 0;
+    
+    
+    
+        if(![NetworkUtils IsNetworkAvailable])
+        {
+            dispatch_async(dispatch_get_main_queue(), ^{
+                if(result)
+                    result([[RAConvertor string2dict:[NSString stringWithFormat:@"{'result':%d}",RESULT_NET_NOTAVAILABLE]] mutableCopy]);
+            });
+    //        return detailContent;
+            return nil;
+        }
+
+    params = [self prepare_addtional_params:params];
+    
+    
+//repeat:
+//    {
+        
+        //    return [self fake_json:url];
+        
+        //    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+        //分界线的标识符
+        NSString *TWITTERFON_FORM_BOUNDARY = @"AaB03x";
+        //根据url初始化request
+        NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]
+                                                               cachePolicy:NSURLRequestReloadIgnoringLocalCacheData
+                                                           timeoutInterval:JSON_TIMEOUT];
+
+        //分界线 --AaB03x
+        NSString *MPboundary=[[NSString alloc]initWithFormat:@"--%@",TWITTERFON_FORM_BOUNDARY];
+        //结束符 AaB03x--
+        NSString *endMPboundary=[[NSString alloc]initWithFormat:@"%@--",MPboundary];
+        //要上传的图片
+        //    UIImage *image=[params objectForKey:@"pic"];
+        //得到图片的data
+        /*
+//            NSData* data = [NSData dataWithContentsOfFile:file_path];
+         
+         */
+        //http body的字符串
+        NSMutableString *body=[[NSMutableString alloc]init];
+        
+        //    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
+        //     [params setValue:@"handset_login" forKey:@"action"];
+        //    [headers setValue:[NSString stringWithFormat:@"%d",dataLength] forKey:@"Content-Length"];
+        
+        //    [params setValue:appDelegate.sessionid forKey:@"sessionid"];
+        //   [params setValue:password forKey:@"password"];
+        //    [params setValue:[NSString stringWithFormat:@"%d",ver]  forKey:@"auth_ver"];
+        
+        
+        
+        //    [headers setValue:headQuerlString forKey:@"param"];
+        
+        //参数的集合的所有key的集合
+        NSArray *keys= [params allKeys];
+        DebugLog(@"================parms==================");
+        //遍历keys
+        for(int i=0;i<[keys count];i++)
+        {
+            //得到当前key
+            NSString *key=[keys objectAtIndex:i];
+            //如果key不是pic,说明value是字符类型,比如name:Boris
+            if(![key isEqualToString:@"pic"])
+            {
+                //添加分界线,换行
+                [body appendFormat:@"%@\r\n",MPboundary];
+                //添加字段名称,换2行
+                [body appendFormat:@"Content-Disposition: form-data; name=\"%@\"\r\n\r\n",key];
+                //添加字段的值
+                [body appendFormat:@"%@\r\n",[params objectForKey:key]];
+                DebugLog(@"parameter: key=%@   value=%@",key,[params objectForKey:key]);
+            }
+        }
+        DebugLog(@"================parms==================");
+        ////添加分界线,换行
+       /* [body appendFormat:@"%@\r\n",MPboundary];
+        
+        
+        //声明pic字段,文件名为boris.png
+        
+        NSString * file_format=[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"upfile\"; filename=\"%@\"\r\n", [file_path lastPathComponent]];
 
+        
+        
+        [body appendFormat:@"%@", file_format];
+        //声明上传文件的格式
+        [body appendFormat:@"Content-Type: application/zip\r\n\r\n"];
+        
+        
+        */
+        //声明结束符:--AaB03x--
+        NSString *end=[[NSString alloc]initWithFormat:@"\r\n%@",endMPboundary];
+        //声明myRequestData,用来放入http body
+        NSMutableData *myRequestData=[NSMutableData data];
+        //将body字符串转化为UTF8格式的二进制
+        [myRequestData appendData:[body dataUsingEncoding:NSUTF8StringEncoding]];
+        
+        
+        /*
+        //将image的data加入
+            [myRequestData appendData:data];
+        
+        */
+        
+        //加入结束符--AaB03x--
+        [myRequestData appendData:[end dataUsingEncoding:NSUTF8StringEncoding]];
+        
+        
+        
+        
+        //设置HTTPHeader中Content-Type的值
+        NSString *content=[[NSString alloc]initWithFormat:@"multipart/form-data; boundary=%@",TWITTERFON_FORM_BOUNDARY];
+        //设置HTTPHeader
+        [request setValue:content forHTTPHeaderField:@"Content-Type"];
+        
+        [request setValue:@"multipart/form-data" forHTTPHeaderField:@"enctype"];
+        
+        // 关闭keep alive
+        [request setValue:@"close" forHTTPHeaderField:@"Connection"];
+        //设置Content-Length
+        [request setValue:[NSString stringWithFormat:@"%lu", (unsigned long)[myRequestData length]] forHTTPHeaderField:@"Content-Length"];
+        //设置http body
+        [request setHTTPBody:myRequestData];
+        //http method
+        [request setHTTPMethod:@"POST"];
+        
+        
+    NSLog([[NSString alloc] initWithData:myRequestData encoding:NSUTF8StringEncoding]);
+         
+         NSURLSession *urlSession = [self standSession];
+         
+         if (urlSession.delegate) {
+             if ([urlSession.delegate isKindOfClass:[RANetworkTaskDelegate class]]) {
+                 
+                 RANetworkTaskDelegate *delegate = (RANetworkTaskDelegate *)urlSession.delegate;
+                 
+//                 if (p) {
+//                     delegate.p = p;
+//                 }
+//
+                 if (result) {
+                     delegate.r = result;
+                 }
+//
+//                 if (decrypt) {
+//                     delegate.decryptHandler = decrypt;
+//                 }
+                 
+             }
+         }
+   NSURLSessionDataTask *dataTask = [urlSession dataTaskWithRequest:request];
+//    [dataTask1 resume];
+//        NSURLSessionDataTask *dataTask =[urlSession dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
+//
+//                        NSData *responseData =data;
+//                        NSHTTPURLResponse* urlResponse =response;
+//                        if (responseData==nil) {
+//
+//                            //            DebugLog(@"response error:%@", [error localizedDescription]);
+//
+//
+//                            NSMutableDictionary* ret = [[NSMutableDictionary alloc] init];
+//                            //#define RESULT_FALSE 0
+//                            //#define RESULT_TRUE         2
+//                            //#define RESULT_NET_ERROR             -3
+//                            //#define RESULT_NET_NOTAVAILABLE          -4
+//                            //#define RESULT_ERROR                 -5
+//                            //#define RESULT_LOCALFILE_ERROR             -7
+//                            //#define RESULT_USERAUTH_ERROR             -9
+//                            //#define RESULT_UPDATE_USERAUTH_ERROR     -11
+//                            //#define RESULT_SESSION_EXPIRED              -13
+//                            //#define RESULT_VER_LOW
+//
+//                            //     NSString * moreinfo = error.description ;
+//
+//                            NSString* err_msg = [error localizedDescription];
+//
+//
+//                            //-----------------retry 3 times for error code -1005------------------------
+//                            if(error.code==-1005&&retry<3)
+//                            {
+//                                int new_retry=retry+1;
+//                                [self request_interface:url parameters:params err_record_url:recorder_url completionHandler:result retry:new_retry];
+//                                return;
+//            //                    retry++;
+//            //                    goto repeat;
+//
+//                            }
+//                            //-----------------end retry 3 times for error code -1005------------------------
+//
+//                            NSDictionary* error_json = [RAUtils error_dict:error];
+//                            [ret setObject:error_json forKey:@"err_obj"];
+//                            NSString* resp_msg= nil;
+//
+//                            if(err_msg.length==0)
+//                            {
+//                                err_msg =[NSHTTPURLResponse localizedStringForStatusCode:urlResponse.statusCode];
+//                                resp_msg = err_msg;
+//                            }
+//                            [ret setValue:[NSString stringWithFormat:@"%d",RESULT_NET_ERROR] forKey:@"result"];
+//                            [ret setValue:err_msg forKey:@"err_msg"];
+//                            [ret setValue:resp_msg forKey:@"resp_msg"];
+//                            [ret setValue:[NSString stringWithFormat:@"%ld",(long)urlResponse.statusCode] forKey:@"resp_code"];
+//
+//
+//                            NSData *jsonData = [NSJSONSerialization dataWithJSONObject:ret
+//                                                                               options:0
+//                                                                                 error:nil];
+//                            if(![url isEqualToString:recorder_url])
+//                            {
+//                                [self err_log:[RAUtils base64en:[RAConvertor dict2string:params]] result:[RAUtils base64en:[RAConvertor dict2string:ret]] module:url code:RESULT_NET_ERROR];
+//                            }
+//                            dispatch_async(dispatch_get_main_queue(), ^{
+//                            if(result)
+//                                return result([[RAConvertor data2dict:jsonData] mutableCopy]);
+//                            });
+//                        }
+//                        else
+//                        {
+//                            NSDictionary* dict =[RAConvertor data2dict:responseData];
+//                            dispatch_async(dispatch_get_main_queue(), ^{
+//                                if(result)
+//                                    return result([[RAConvertor data2dict:responseData] mutableCopy]);
+//                            });
+//
+//                        }
+//
+//        }];
+////         NSURLSessionDataTask *dataTask = [urlSession dataTaskWithRequest:request ];
+//
+         [dataTask resume];
+         
+         return nil;
+         
+         
+         
+        
+//
+//
+//        NSHTTPURLResponse* urlResponse = nil;
+//
+//        NSError *error = nil;
+//        NSLog(@"begin request %@",url);
+//
+//        NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:&error];
+//
+//
+//        DebugLog(@"url: %@",url);
+//
+//        DebugLog(@"response: %@",[NSHTTPURLResponse localizedStringForStatusCode:urlResponse.statusCode]);
+//
+//
+//        NSLog(@"get response");
+//        if (responseData==nil) {
+//
+//            //            DebugLog(@"response error:%@", [error localizedDescription]);
+//
+//
+//            NSMutableDictionary* ret = [[NSMutableDictionary alloc] init];
+//            //#define RESULT_FALSE 0
+//            //#define RESULT_TRUE         2
+//            //#define RESULT_NET_ERROR             -3
+//            //#define RESULT_NET_NOTAVAILABLE          -4
+//            //#define RESULT_ERROR                 -5
+//            //#define RESULT_LOCALFILE_ERROR             -7
+//            //#define RESULT_USERAUTH_ERROR             -9
+//            //#define RESULT_UPDATE_USERAUTH_ERROR     -11
+//            //#define RESULT_SESSION_EXPIRED              -13
+//            //#define RESULT_VER_LOW
+//
+//            //     NSString * moreinfo = error.description ;
+//
+//            NSString* err_msg = [error localizedDescription];
+//
+//
+//            //-----------------retry 3 times for error code -1005------------------------
+//            if(error.code==-1005&&retry<3)
+//            {
+//                retry++;
+//                goto repeat;
+//
+//            }
+//            //-----------------end retry 3 times for error code -1005------------------------
+//
+//            NSDictionary* error_json = [RAUtils error_dict:error];
+//            [ret setObject:error_json forKey:@"err_obj"];
+//            NSString* resp_msg= nil;
+//
+//            if(err_msg.length==0)
+//            {
+//                err_msg =[NSHTTPURLResponse localizedStringForStatusCode:urlResponse.statusCode];
+//                resp_msg = err_msg;
+//            }
+//            [ret setValue:[NSString stringWithFormat:@"%d",RESULT_NET_ERROR] forKey:@"result"];
+//            [ret setValue:err_msg forKey:@"err_msg"];
+//            [ret setValue:resp_msg forKey:@"resp_msg"];
+//            [ret setValue:[NSString stringWithFormat:@"%ld",(long)urlResponse.statusCode] forKey:@"resp_code"];
+//
+//
+//            NSData *jsonData = [NSJSONSerialization dataWithJSONObject:ret
+//                                                               options:0
+//                                                                 error:nil];
+//            if(![url isEqualToString:recorder_url])
+//            {
+//                [self err_log:[RAUtils base64en:[RAConvertor dict2string:params]] result:[RAUtils base64en:[RAConvertor dict2string:ret]] module:url code:RESULT_NET_ERROR];
+//            }
+//            return jsonData;
+//
+//        }
+//        else
+//        {
+//          //  NSString* err_msg = [error localizedDescription];
+//            NSMutableString *str = [[NSMutableString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
+//
+//            DebugLog(@"data string: %@",str);
+//            NSError *error1 = nil;
+//
+//            NSMutableDictionary* jsobj = [[NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingMutableContainers error:&error1] mutableCopy];
+//
+//            if(jsobj==nil)// 服务器返回不是json
+//            {
+//
+//                jsobj=[[NSMutableDictionary alloc] init];
+//                [jsobj setValue:[NSNumber numberWithInt:RESULT_NO_RESPONSE] forKey:@"result"];
+//
+//            }
+////            if([jsobj[@"encrypt"] boolValue]==true)
+////            {
+////                jsobj = decryptBlock(jsobj);
+////            }
+////            if (resultBlock) {
+////                jsobj = resultBlock(jsobj);
+////            }
+//
+//            int result=[[jsobj valueForKey:@"result"] intValue];
+//            if(![url isEqualToString:recorder_url]&&/*![url isEqualToString:URL_DOWNLOAD_OFFLINE]&&*/result!=2&&result!=99)
+//            {
+//                [self err_log:[RAUtils base64en:[RAConvertor dict2string:params]] result:[RAUtils base64en:str] module:url code:result];
+//            }
+//            NSData *jsonData = [NSJSONSerialization dataWithJSONObject:jsobj
+//                                                               options:0
+//                                                                 error:nil];
+//            return jsonData;
+//
+//        }
+//        return responseData;
+//    }
+}
 +(NSData*)request_interface : (NSString*) url parameters:(NSMutableDictionary *) params  err_record_url:(NSString* )recorder_url completionHandler:(resultHandler)result retry:(int) retry
 {
 //    __block int retry = 0;
@@ -727,7 +1079,7 @@ repeat:
                  
              }
          }
-         
+
         NSURLSessionDataTask *dataTask =[urlSession dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
             
                         NSData *responseData =data;