#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