打印服務端返回的錯誤信息矿辽,并非簡單的網(wǎng)絡請求錯誤
若傳遞參數(shù)有誤芭毙,一般服務端會有XX參數(shù)有誤的錯誤信息嘱丢,在基類的請求中打印即可。
DiffBaseNetwork.h
//
// DiffBaseNetwork.h
// AppGame
//
// Created by zengchunjun on 2017/4/19.
// Copyright ? 2017年 zengchunjun. All rights reserved.
//
#import <AFNetworking/AFNetworking.h>
typedef NS_ENUM(NSUInteger, DifferNetError) {
DifferNetError_Param = 1001, //=> '參數(shù)有誤',
DifferNetError_Param_Null = 1002 , //=> '圖片數(shù)據(jù)為空',
DifferNetError_Param_Data = 1003 , //=> '圖片數(shù)據(jù)格式不正確',
DifferNetError_Param_Image = 1004 , //=> '圖片格式不正確',
DifferNetError_Param_Save_Image = 1005 , //=> '保存圖片失敗',
DifferNetError_Param_No_Token = 4001 , //=> '缺少參數(shù) access_token',
DifferNetError_Param_Expired_Token = 4002 , //=> 'access_token已過期',
/*
//用戶操作錯誤碼
DifferNetError_Param_No_User = 10001 , //=> '沒有找到該用戶',
DifferNetError_Param_Save_User = 10002 , //=> '保存用戶失敗',
DifferNetError_Param_ = 10003 , //=> '游戲名長度不能長于250個字符',
DifferNetError_Param = 10004 , //=> '圖片JSON格式不正確',
DifferNetError_Param = 10005 , //=> '原始游戲ID錯誤',
DifferNetError_Param = 10006 , //=> '保存推薦失敗',
DifferNetError_Param = 10007 , //=> '保存推薦圖片失敗',
DifferNetError_Param = 10008 , //=> '圖片說明長度必須少于250個字符',
DifferNetError_Param = 10009 , //=> '游戲ID不正確',
DifferNetError_Param = 10010 , //=> '刪除失敗, 收藏不存在',
DifferNetError_Param = 10011 , //=> '收藏失敗',
DifferNetError_Param = 10012 , //=> '已經(jīng)被收藏, 不能再次收藏',
DifferNetError_Param = 10013 , //=> '收藏操作錯誤',
//游戲操作
DifferNetError_Param = 20001 , //=> '找不到指定游戲',
DifferNetError_Param = 20002 , //=> '保存游戲下載鏈接錯誤',
DifferNetError_Param = 20003 , //=> '游戲列表為空',
//評價操作
DifferNetError_Param = 30001 , //=> '游戲ID不存在',
DifferNetError_Param = 30002 , //=> '不能重復評價',
DifferNetError_Param = 30003 , //=> '評分必須在1~5之間',
DifferNetError_Param = 30004 , //=> '評價內(nèi)容不能為空',
DifferNetError_Param = 30005 , //=> '標簽格式錯誤',
DifferNetError_Param = 30006 , //=> '找不到標簽ID',
DifferNetError_Param = 30007 , //=> '保存評價失敗',
DifferNetError_Param = 30008 , //=> '評價ID無效',
DifferNetError_Param = 30009 , //=> 'thumb參數(shù)不正確, 只能是 0 或者 1',
//論壇錯誤
DifferNetError_Param = 40001 , //=> '標題或內(nèi)容不能為空',
DifferNetError_Param = 40002 , //=> '游戲ID不正確',
DifferNetError_Param = 40003 , //=> '保存帖子失敗',
DifferNetError_Param = 40004 , //=> '帖子ID不正確',
DifferNetError_Param = 40005 , //=> '保存回帖失敗',
DifferNetError_Param = 40006 , //=> '找不到指定的帖子',
//攻略接口錯誤
DifferNetError_Param = 50001 , //=> '缺少參數(shù) game_id',
//欄目接口錯誤
DifferNetError_Param = 60001 , //=> '沒有該欄目',
//反饋接口錯誤
DifferNetError_Param = 70001 , //=> '缺少參數(shù) game_id',
DifferNetError_Param = 70002 , //=> '缺少參數(shù) type_id',
DifferNetError_Param = 70003 , //=> '缺少參數(shù) content',
DifferNetError_Param = 70004 , //=> '保存反饋失敗',
*/
};
@interface DiffBaseNetwork : AFHTTPSessionManager
// 網(wǎng)絡請求單例
//+ (instancetype)shareInstance;
/**
* 發(fā)送一個GET請求
*
* @param url 請求路徑
* @param params 請求參數(shù)
* @param success 請求成功后的回調(diào)(請將請求成功后想做的事情寫到這個block中)
* @param failure 請求失敗后的回調(diào)(請將請求失敗后想做的事情寫到這個block中)
*/
- (void)getOfDiffer:(NSString *)url params:(NSDictionary *)params success:(void(^)(id responseObj))success failure:(void(^)(NSError *error))failure;
/**
* 發(fā)送一個POST請求
*
* @param url 請求路徑
* @param params 請求參數(shù)
* @param success 請求成功后的回調(diào)(請將請求成功后想做的事情寫到這個block中)
* @param failure 請求失敗后的回調(diào)(請將請求失敗后想做的事情寫到這個block中)
*/
- (NSURLSessionDataTask *)postOfDiffer:(NSString *)url params:(NSDictionary *)params success:(void(^)(id responseObj))success failure:(void(^)(NSError *error ,NSUInteger code,NSString *notice))failure;
/**
* 上傳圖片
* @param image 要上傳的圖片
* @param url 請求路徑
* @param params 請求參數(shù)
* @param success 請求成功后的回調(diào)(請將請求成功后想做的事情寫到這個block中)
* @param failure 請求失敗后的回調(diào)(請將請求失敗后想做的事情寫到這個block中)
*/
- (void)updateImage:(UIImage *)image url:(NSString *)url params:(NSDictionary *)params success:(void(^)(id responseObj))success failure:(void(^)(NSError *error))failure;
@end
DiffBaseNetwork.m
//
// DiffBaseNetwork.m
// AppGame
//
// Created by zengchunjun on 2017/4/19.
// Copyright ? 2017年 zengchunjun. All rights reserved.
//
#import "DiffBaseNetwork.h"
@implementation DiffBaseNetwork
// get請求
- (void)getOfDiffer:(NSString *)url params:(NSDictionary *)params success:(void(^)(id responseObj))success failure:(void(^)(NSError *error))failure
{
[self GET:url parameters:params progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
if (success) {
success(responseObject);
}
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSData *data = error.userInfo[AFNetworkingOperationFailingURLResponseDataErrorKey];
if (data) {
NSDictionary *errorInfo = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
NSArray *array = [errorInfo arrayForKey:@"errors"];
NSUInteger errorCode = 0;
NSString *notice;
for (NSDictionary *dic in array) {
errorCode = [dic integerForKey:@"code"];
notice = [dic objectForKey:@"title"];
}
if (errorCode && notice) {
NSLog(@"【服務器返回】:%ld,%@",errorCode,notice);
if (failure) {
failure(error);
}
}else{
if (failure) {
failure(error);
}
}
}else{
if (failure) {
failure(error);
}
}
}];
}
// post請求
- (NSURLSessionDataTask *)postOfDiffer:(NSString *)url params:(NSDictionary *)params success:(void(^)(id responseObj))success failure:(void(^)(NSError *error ,NSUInteger code,NSString *notice))failure
{
NSURLSessionDataTask *dataTask = [self POST:url parameters:params progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
if (success) {
success(responseObject);
}
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSData *data = error.userInfo[AFNetworkingOperationFailingURLResponseDataErrorKey];
if (data) {
NSDictionary *errorInfo = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
NSArray *array = [errorInfo arrayForKey:@"errors"];
NSUInteger errorCode = 0;
NSString *notice;
for (NSDictionary *dic in array) {
errorCode = [dic integerForKey:@"code"];
notice = [dic objectForKey:@"title"];
}
if (errorCode && notice) {
NSLog(@"【服務器返回】:%ld,%@",errorCode,notice);
failure(error, errorCode, notice);
}else{
if (failure) {
failure(error, -1,nil);
}
}
}else{
if (failure) {
failure(error, -1,nil);
}
}
}];
return dataTask;
}
- (void)updateImage:(UIImage *)image url:(NSString *)url params:(NSDictionary *)params success:(void(^)(id responseObj))success failure:(void(^)(NSError *error))failure
{
[self POST:url parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
// 上傳文件
NSData *imageData = UIImageJPEGRepresentation(image, 1);
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyyMMddHHmmss";
NSString *str = [formatter stringFromDate:[NSDate date]];
NSString *fileName = [NSString stringWithFormat:@"%@.jpg", str];
[formData appendPartWithFileData:imageData name:@"image" fileName:fileName mimeType:@"image/jpg"];
} progress:^(NSProgress * _Nonnull uploadProgress) {
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
if (success) {
success(responseObject);
}
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
if (failure) {
failure(error);
}
}];
}
/*
AFHTTPSessionManager *sessionManager = [DifferNetwork shareInstance];
//JSON
AFHTTPRequestSerializer *serializer = [AFJSONRequestSerializer serializer];
[sessionManager POST:url parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
// 上傳文件
NSData *imageData = UIImageJPEGRepresentation(image, 1);
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyyMMddHHmmss";
NSString *str = [formatter stringFromDate:[NSDate date]];
NSString *fileName = [NSString stringWithFormat:@"%@.jpg", str];
[formData appendPartWithFileData:imageData name:@"image" fileName:fileName mimeType:@"image/jpg"];
} progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
NSLog(@"%@",responseObject);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"%@",error);
}];
*/
@end