#import "HttpsManager.h"
@implementationHttpsManager
#pragma mark - 创建请求者
+(AFHTTPSessionManager*)manager
{
AFHTTPSessionManager*manager = [AFHTTPSessionManagermanager];
// 超时时间
manager.requestSerializer.timeoutInterval= kTimeOutInterval;
// 声明上传的是json格式的参数,需要你和后台约定好,不然会出现后台无法获取到你上传的参数问题
manager.requestSerializer= [AFHTTPRequestSerializerserializer];// 上传普通格式
// manager.requestSerializer = [AFJSONRequestSerializer serializer]; // 上传JSON格式
// 声明获取到的数据格式
manager.responseSerializer= [AFHTTPResponseSerializerserializer];// AFN不会解析,数据是data,需要自己解析
// manager.responseSerializer = [AFJSONResponseSerializer serializer]; // AFN会JSON解析返回的数据
// 个人建议还是自己解析的比较好,有时接口返回的数据不合格会报3840错误,大致是AFN无法解析返回来的数据
returnmanager;
}
+ (void)getUserCarShopAndSalesDataForSalesWithUserId:(NSString*)userIddate:(NSString*)dateselectAreaType:(NSString*)areaTypeSuccess:(SuccessBlock)successfail:(AFNErrorBlock)fail
{
// get请求也可以直接将参数放在字典里,AFN会自己讲参数拼接在url的后面,不需要自己凭借
NSDictionary*param = @{@"user_id":userId,@"sale_date":date,@"accessToken":@"e9c0e60318ebd07ec2fe",@"area_type":areaType};
// 创建请求类
AFHTTPSessionManager*manager = [selfmanager];
[managerGET:@"http://pm.yunhan-china.com/index.php/Api_sale/sales_get"parameters:paramprogress:^(NSProgress* _Nonnull downloadProgress) {
// 这里可以获取到目前数据请求的进度
}success:^(NSURLSessionDataTask* _Nonnull task,id_Nullable responseObject) {
// 请求成功
if(responseObject){
NSDictionary*dict = [NSJSONSerializationJSONObjectWithData:responseObjectoptions:NSJSONReadingMutableContainerserror:nil];
success(dict,YES);
}else{
success(@{@"msg":@"暂无数据"},NO);
}
}failure:^(NSURLSessionDataTask* _Nullable task,NSError* _Nonnull error) {
// 请求失败
fail(error);
}];
}
+ (void)loginWithUserAccount:(NSString*)accountpassword:(NSString*)passwordsuccess:(SuccessBlock)successfail:(AFNErrorBlock)fail
{
// 将请求参数放在请求的字典里
NSDictionary*param = @{@"phoneNumber":account,@"password":@"f379eaf3c831b04de153469d1bec345e"};
// 创建请求类
AFHTTPSessionManager*manager = [selfmanager];
[managerPOST:@"http://pm.yunhan-china.com/index.php/api_common/login"
parameters:param
progress:^(NSProgress* _Nonnull uploadProgress) {
// 这里可以获取到目前数据请求的进度
}success:^(NSURLSessionDataTask* _Nonnull task,id_Nullable responseObject) {
// 请求成功
if(responseObject){
NSDictionary*dict = [NSJSONSerializationJSONObjectWithData:responseObjectoptions:NSJSONReadingMutableContainerserror:nil];
success(dict,YES);
}else{
success(@{@"msg":@"暂无数据"},NO);
}
}failure:^(NSURLSessionDataTask* _Nullable task,NSError* _Nonnull error) {
// 请求失败
fail(error);
}];
}
- (void)downLoadWithUrlString:(NSString*)urlString
{
// 1.创建管理者对象
AFHTTPSessionManager*manager = [AFHTTPSessionManagermanager];
// 2.设置请求的URL地址
NSURL*url = [NSURLURLWithString:urlString];
// 3.创建请求对象
NSURLRequest*request = [NSURLRequestrequestWithURL:url];
// 4.下载任务
NSURLSessionDownloadTask*task = [managerdownloadTaskWithRequest:requestprogress:^(NSProgress* _Nonnull downloadProgress) {
// 下载进度
NSLog(@"当前下载进度为:%lf",1.0* downloadProgress.completedUnitCount/ downloadProgress.totalUnitCount);
}destination:^NSURL* _Nonnull(NSURL* _Nonnull targetPath,NSURLResponse* _Nonnull response) {
// 下载地址
NSLog(@"默认下载地址%@",targetPath);
// 设置下载路径,通过沙盒获取缓存地址,最后返回NSURL对象
NSString*filePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask,YES)lastObject];
return[NSURLfileURLWithPath:filePath];// 返回的是文件存放在本地沙盒的地址
}completionHandler:^(NSURLResponse* _Nonnull response,NSURL* _Nullable filePath,NSError* _Nullable error) {
// 下载完成调用的方法
NSLog(@"%@---%@", response, filePath);
}];
// 5.启动下载任务
[taskresume];
}
- (void)uploadWithUser:(NSString*)userIdUrlString:(NSString*)urlStringupImg:(UIImage*)upImg
{
// 创建管理者对象
AFHTTPSessionManager*manager = [AFHTTPSessionManagermanager];
// 参数
NSDictionary*param = @{@"user_id":userId};
[managerPOST:urlStringparameters:paramconstructingBodyWithBlock:^(id _Nonnull formData) {
/******** 1.上传已经获取到的img *******/
// 把图片转换成data
NSData*data = UIImagePNGRepresentation(upImg);
// 拼接数据到请求题中
[formDataappendPartWithFileData:dataname:@"file"fileName:@"123.png"mimeType:@"image/png"];
/******** 2.通过路径上传沙盒或系统相册里的图片 *****/
// [formData appendPartWithFileURL:[NSURL fileURLWithPath:@"文件地址"] name:@"file" fileName:@"1234.png" mimeType:@"application/octet-stream" error:nil];
}progress:^(NSProgress* _Nonnull uploadProgress) {
// 打印上传进度
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.创建网络监测者
AFNetworkReachabilityManager*manager = [AFNetworkReachabilityManagersharedManager];
/*枚举里面四个状态 分别对应 未知 无网络 数据 WiFi
typedef NS_ENUM(NSInteger, AFNetworkReachabilityStatus) {
AFNetworkReachabilityStatusUnknown = -1, 未知
AFNetworkReachabilityStatusNotReachable = 0, 无网络
AFNetworkReachabilityStatusReachableViaWWAN = 1, 蜂窝数据网络
AFNetworkReachabilityStatusReachableViaWiFi = 2, WiFi
};
*/
[managersetReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
//这里是监测到网络改变的block 可以写成switch方便
//在里面可以随便写事件
switch(status) {
caseAFNetworkReachabilityStatusUnknown:
NSLog(@"未知网络状态");
break;
caseAFNetworkReachabilityStatusNotReachable:
NSLog(@"无网络");
break;
caseAFNetworkReachabilityStatusReachableViaWWAN:
NSLog(@"蜂窝数据网");
break;
caseAFNetworkReachabilityStatusReachableViaWiFi:
NSLog(@"WiFi网络");
break;
default:
break;
}
}] ;
}
@end
网友评论