AFNetworking 3.1使用方法

#import "HttpsManager.h"

@implementationHttpsManager

#pragma?mark?-?創(chuàng)建請求者

+(AFHTTPSessionManager*)manager

{

AFHTTPSessionManager*manager?=?[AFHTTPSessionManagermanager];

//?超時時間

manager.requestSerializer.timeoutInterval=?kTimeOutInterval;

//?聲明上傳的是json格式的參數(shù),需要你和后臺約定好,不然會出現(xiàn)后臺無法獲取到你上傳的參數(shù)問題

manager.requestSerializer=?[AFHTTPRequestSerializerserializer];//?上傳普通格式

//????manager.requestSerializer?=?[AFJSONRequestSerializer?serializer];?//?上傳JSON格式

//?聲明獲取到的數(shù)據(jù)格式

manager.responseSerializer=?[AFHTTPResponseSerializerserializer];//?AFN不會解析,數(shù)據(jù)是data,需要自己解析

//????manager.responseSerializer?=?[AFJSONResponseSerializer?serializer];?//?AFN會JSON解析返回的數(shù)據(jù)

//?個人建議還是自己解析的比較好,有時接口返回的數(shù)據(jù)不合格會報3840錯誤,大致是AFN無法解析返回來的數(shù)據(jù)

returnmanager;

}

+?(void)getUserCarShopAndSalesDataForSalesWithUserId:(NSString*)userIddate:(NSString*)dateselectAreaType:(NSString*)areaTypeSuccess:(SuccessBlock)successfail:(AFNErrorBlock)fail

{

//?get請求也可以直接將參數(shù)放在字典里,AFN會自己講參數(shù)拼接在url的后面,不需要自己憑借

NSDictionary*param?=?@{@"user_id":userId,@"sale_date":date,@"accessToken":@"e9c0e60318ebd07ec2fe",@"area_type":areaType};

//?創(chuàng)建請求類

AFHTTPSessionManager*manager?=?[selfmanager];

[managerGET:@"http://pm.yunhan-china.com/index.php/Api_sale/sales_get"parameters:paramprogress:^(NSProgress*?_Nonnull?downloadProgress)?{

//?這里可以獲取到目前數(shù)據(jù)請求的進(jìn)度

}success:^(NSURLSessionDataTask*?_Nonnull?task,id_Nullable?responseObject)?{

//?請求成功

if(responseObject){

NSDictionary*dict?=?[NSJSONSerializationJSONObjectWithData:responseObjectoptions:NSJSONReadingMutableContainerserror:nil];

success(dict,YES);

}else{

success(@{@"msg":@"暫無數(shù)據(jù)"},NO);

}

}failure:^(NSURLSessionDataTask*?_Nullable?task,NSError*?_Nonnull?error)?{

//?請求失敗

fail(error);

}];

}

+?(void)loginWithUserAccount:(NSString*)accountpassword:(NSString*)passwordsuccess:(SuccessBlock)successfail:(AFNErrorBlock)fail

{

//?將請求參數(shù)放在請求的字典里

NSDictionary*param?=?@{@"phoneNumber":account,@"password":@"f379eaf3c831b04de153469d1bec345e"};

//?創(chuàng)建請求類

AFHTTPSessionManager*manager?=?[selfmanager];

[managerPOST:@"http://pm.yunhan-china.com/index.php/api_common/login"

parameters:param

progress:^(NSProgress*?_Nonnull?uploadProgress)?{

//?這里可以獲取到目前數(shù)據(jù)請求的進(jìn)度

}success:^(NSURLSessionDataTask*?_Nonnull?task,id_Nullable?responseObject)?{

//?請求成功

if(responseObject){

NSDictionary*dict?=?[NSJSONSerializationJSONObjectWithData:responseObjectoptions:NSJSONReadingMutableContainerserror:nil];

success(dict,YES);

}else{

success(@{@"msg":@"暫無數(shù)據(jù)"},NO);

}

}failure:^(NSURLSessionDataTask*?_Nullable?task,NSError*?_Nonnull?error)?{

//?請求失敗

fail(error);

}];

}

-?(void)downLoadWithUrlString:(NSString*)urlString

{

//?1.創(chuàng)建管理者對象

AFHTTPSessionManager*manager?=?[AFHTTPSessionManagermanager];

//?2.設(shè)置請求的URL地址

NSURL*url?=?[NSURLURLWithString:urlString];

//?3.創(chuàng)建請求對象

NSURLRequest*request?=?[NSURLRequestrequestWithURL:url];

//?4.下載任務(wù)

NSURLSessionDownloadTask*task?=?[managerdownloadTaskWithRequest:requestprogress:^(NSProgress*?_Nonnull?downloadProgress)?{

//?下載進(jìn)度

NSLog(@"當(dāng)前下載進(jìn)度為:%lf",1.0*?downloadProgress.completedUnitCount/?downloadProgress.totalUnitCount);

}destination:^NSURL*?_Nonnull(NSURL*?_Nonnull?targetPath,NSURLResponse*?_Nonnull?response)?{

//?下載地址

NSLog(@"默認(rèn)下載地址%@",targetPath);

//?設(shè)置下載路徑,通過沙盒獲取緩存地址,最后返回NSURL對象

NSString*filePath?=?[NSSearchPathForDirectoriesInDomains(NSCachesDirectory,?NSUserDomainMask,YES)lastObject];

return[NSURLfileURLWithPath:filePath];//?返回的是文件存放在本地沙盒的地址

}completionHandler:^(NSURLResponse*?_Nonnull?response,NSURL*?_Nullable?filePath,NSError*?_Nullable?error)?{

//?下載完成調(diào)用的方法

NSLog(@"%@---%@",?response,?filePath);

}];

//?5.啟動下載任務(wù)

[taskresume];

}

-?(void)uploadWithUser:(NSString*)userIdUrlString:(NSString*)urlStringupImg:(UIImage*)upImg

{

//?創(chuàng)建管理者對象

AFHTTPSessionManager*manager?=?[AFHTTPSessionManagermanager];

//?參數(shù)

NSDictionary*param?=?@{@"user_id":userId};

[managerPOST:urlStringparameters:paramconstructingBodyWithBlock:^(id??_Nonnull?formData)?{

/********?1.上傳已經(jīng)獲取到的img?*******/

//?把圖片轉(zhuǎn)換成data

NSData*data?=?UIImagePNGRepresentation(upImg);

//?拼接數(shù)據(jù)到請求題中

[formDataappendPartWithFileData:dataname:@"file"fileName:@"123.png"mimeType:@"image/png"];

/********?2.通過路徑上傳沙盒或系統(tǒng)相冊里的圖片?*****/

//????????[formData?appendPartWithFileURL:[NSURL?fileURLWithPath:@"文件地址"]?name:@"file"?fileName:@"1234.png"?mimeType:@"application/octet-stream"?error:nil];

}progress:^(NSProgress*?_Nonnull?uploadProgress)?{

//?打印上傳進(jìn)度

NSLog(@"%lf",1.0*uploadProgress.completedUnitCount/?uploadProgress.totalUnitCount);

}success:^(NSURLSessionDataTask*?_Nonnull?task,id_Nullable?responseObject)?{

//請求成功

NSLog(@"請求成功:%@",responseObject);

}failure:^(NSURLSessionDataTask*?_Nullable?task,NSError*?_Nonnull?error)?{

//請求失敗

NSLog(@"請求失?。?@",error);

}];

}

-?(void)AFNetworkStatus{

//1.創(chuàng)建網(wǎng)絡(luò)監(jiān)測者

AFNetworkReachabilityManager*manager?=?[AFNetworkReachabilityManagersharedManager];

/*枚舉里面四個狀態(tài)??分別對應(yīng)?未知?無網(wǎng)絡(luò)?數(shù)據(jù)?WiFi

typedef?NS_ENUM(NSInteger,?AFNetworkReachabilityStatus)?{

AFNetworkReachabilityStatusUnknown??????????=?-1,??????未知

AFNetworkReachabilityStatusNotReachable?????=?0,???????無網(wǎng)絡(luò)

AFNetworkReachabilityStatusReachableViaWWAN?=?1,???????蜂窩數(shù)據(jù)網(wǎng)絡(luò)

AFNetworkReachabilityStatusReachableViaWiFi?=?2,???????WiFi

};

*/

[managersetReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus?status)?{

//這里是監(jiān)測到網(wǎng)絡(luò)改變的block??可以寫成switch方便

//在里面可以隨便寫事件

switch(status)?{

caseAFNetworkReachabilityStatusUnknown:

NSLog(@"未知網(wǎng)絡(luò)狀態(tài)");

break;

caseAFNetworkReachabilityStatusNotReachable:

NSLog(@"無網(wǎng)絡(luò)");

break;

caseAFNetworkReachabilityStatusReachableViaWWAN:

NSLog(@"蜂窩數(shù)據(jù)網(wǎng)");

break;

caseAFNetworkReachabilityStatusReachableViaWiFi:

NSLog(@"WiFi網(wǎng)絡(luò)");

break;

default:

break;

}

}]?;

}

@end

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容