NSURLSession如何能实现同步请求?如果用异步请求如何让NSURLSession可以有返回值?下面的代码如果要有返回值该如何修改?

j844259756 发布于 2016/07/19 18:13
阅读 867
收藏 0

NSURLSession如何能实现同步请求?如果用异步请求如何让NSURLSession可以有返回值?下面的代码如果要有返回值该如何修改?

+(void) downloadToFileWithURL:(NSString *)strURL//网址

                      timeout:(int)nTimeout//超出时间

                      filename:(NSString *)strFileName//文件名

                      sucessBlock:(void (^)(BOOL isSuccess))block

                      failBlock:(void(^)(NSError *))failblock





{

    NSURLSession *session = [NSURLSession sharedSession];

   

    NSString *urlAsString = strURL;

        NSURL    *url = [NSURL URLWithString:urlAsString];

    NSURL    *url = [NSURL URLWithString:urlAsString];

    

    

        NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:nTimeout];

    

        NSURLSessionTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {

            

            NSHTTPURLResponse *httpresponse =(NSHTTPURLResponse *) response;

            if(block)

            {

                if(data != nil && (httpresponse.statusCode /100 )==2)

                {



                    NSLog(@"下载成功");

                    NSString *Path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];

                    NSString *filmename = [Path stringByAppendingString:strFileName];

                    if([data writeToFile:filmename atomically:NO])

                    {

  

                        NSLog(@"保存成功");

  

  

                        

                    }

                 }

                

            }

            

            else

            {

                NSLog(@"WTF");

                failblock(error);

            }

            

                   }];

    

    [task resume];

    


加载中
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部