日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

iOS开发之普通网络异步请求与文件下载方法

發(fā)布時(shí)間:2023/12/19 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS开发之普通网络异步请求与文件下载方法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

先來(lái)說(shuō)說(shuō)普通異步下載方法,分為POST、GET兩種

/** GET請(qǐng)求獲取數(shù)據(jù)*/ + (void)getDataWithUrl:(NSString *)strUrl finishBlock:(ECGNCNSDictionaryAndNSErrorBlock)finishBlock {if (strUrl.length == 0) {return;}NSURL *url = [NSURL URLWithString:strUrl];NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];request.HTTPMethod = @"GET";[request setValue:@"application/json; charset=utf-8" forHTTPHeaderField:@"Content-Type"];NSURLSession *session = [NSURLSession sharedSession];NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {//解析并回調(diào)數(shù)據(jù)NSDictionary *dicData = [self dictionaryForJsonData:data];if (finishBlock) {finishBlock(dicData, error);}}];[dataTask resume]; }/** POST請(qǐng)求獲取數(shù)據(jù)*/ + (void)postParam:(NSDictionary *)dicParam toUrl:(NSString *)strUrl finishBlock:(ECGNCNSDictionaryAndNSErrorBlock)finishBlock {if (dicParam == nil || strUrl.length == 0) {return;}NSURL *url = [NSURL URLWithString:strUrl];NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];request.HTTPMethod = @"POST";[request setValue:@"application/json; charset=utf-8" forHTTPHeaderField:@"Content-Type"];request.HTTPBody = [self compactFormatDataForDictionary:dicParam];NSURLSession *session = [NSURLSession sharedSession];NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {//解析并回調(diào)數(shù)據(jù)NSDictionary *dicData = [self dictionaryForJsonData:data];if (finishBlock) {finishBlock(dicData, error);}}];[dataTask resume]; }/** 將字典轉(zhuǎn)換成json格式字符串,不含\n這些符號(hào)*/ - (NSData *)compactFormatDataForDictionary:(NSDictionary *)dicJson {if (![dicJson isKindOfClass:[NSDictionary class]]) {return nil;}NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dicJson options:0 error:nil];if (![jsonData isKindOfClass:[NSData class]]) {return nil;}return jsonData; }/** 將二進(jìn)制數(shù)據(jù)轉(zhuǎn)換成字典*/ - (NSDictionary *)dictionaryForJsonData:(NSData *)jsonData {if (![jsonData isKindOfClass:[NSData class]] || jsonData.length < 1) {return nil;}id jsonObj = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingAllowFragments error:nil];if (![jsonObj isKindOfClass:[NSDictionary class]]) {return nil;}return [NSDictionary dictionaryWithDictionary:(NSDictionary *)jsonObj]; }

?

下面說(shuō)說(shuō)下載文件的方法

/** 下載文件方法*/ - (void)downLoadFileWithUrl:(NSString *)urlStr finishBlock:(GSNetLibTMIdAndDataAndErrorBlock)finishBlock {if (urlStr.length == 0) {return;}NSURL *url = [NSURL URLWithString:urlStr];NSURLSession *session = [NSURLSession sharedSession];//構(gòu)造下載任務(wù)NSURLSessionDownloadTask *downloadTask = [session downloadTaskWithURL:url completionHandler:^(NSURL *location, NSURLResponse *response, NSError *error) {//下載成功回調(diào),文件數(shù)據(jù)會(huì)被默認(rèn)存儲(chǔ)在一個(gè)臨時(shí)目錄if (error == nil) {if (location != nil && [location path].length > 0) {NSString *tmpFilePath = [location path];NSData *data = [NSData dataWithContentsOfFile:tmpFilePath];//回調(diào)數(shù)據(jù)if (finishBlock) {finishBlock(0, data, error);}//刪除臨時(shí)目錄文件NSFileManager *fileMgr = [NSFileManager defaultManager];[fileMgr removeItemAtPath:tmpFilePath error:nil];}}}];//執(zhí)行任務(wù) [downloadTask resume]; }

?

轉(zhuǎn)載于:https://www.cnblogs.com/hecanlin/p/10911370.html

總結(jié)

以上是生活随笔為你收集整理的iOS开发之普通网络异步请求与文件下载方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。