|
|
|
//
|
|
|
|
// myHttp.m
|
|
|
|
// tianyin
|
|
|
|
//
|
|
|
|
// Created by xTT on 15/6/6.
|
|
|
|
// Copyright (c) 2015年 xTT. All rights reserved.
|
|
|
|
//
|
|
|
|
|
|
|
|
#import "MyHttp.h"
|
|
|
|
|
|
|
|
#import "AppDelegate.h"
|
|
|
|
|
|
|
|
#import "User.h"
|
|
|
|
#import "Device.h"
|
|
|
|
#import "Circle.h"
|
|
|
|
|
|
|
|
|
|
|
|
#define goLoginTag 100
|
|
|
|
#define goHomeTag 200
|
|
|
|
#define reQuestTag 300
|
|
|
|
|
|
|
|
#define updataTag 400
|
|
|
|
|
|
|
|
|
|
|
|
@interface MyHttp (){
|
|
|
|
NSString *reURLString;
|
|
|
|
NSDictionary *reParameters;
|
|
|
|
void (^reSuccess)(NSURLSessionDataTask *, id);
|
|
|
|
void (^reFailure)(NSURLSessionDataTask *task, NSError *error);
|
|
|
|
}
|
|
|
|
|
|
|
|
@end
|
|
|
|
|
|
|
|
@implementation MyHttp
|
|
|
|
+ (instancetype)sharedClient
|
|
|
|
{
|
|
|
|
static MyHttp *client = nil;
|
|
|
|
static dispatch_once_t onceToken;
|
|
|
|
dispatch_once(&onceToken, ^{
|
|
|
|
client = [[MyHttp alloc] initWithBaseURL:[NSURL URLWithString:xBaseUrl]];
|
|
|
|
client.requestSerializer.HTTPMethodsEncodingParametersInURI = [NSSet setWithArray:@[@"GET", @"HEAD"]];
|
|
|
|
client.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json",
|
|
|
|
@"text/json",
|
|
|
|
@"text/javascript",
|
|
|
|
@"text/html", nil];
|
|
|
|
[client.reachabilityManager startMonitoring];
|
|
|
|
|
|
|
|
|
|
|
|
NSString *basicAuthStr = [NSString stringWithFormat:@"%@:%@",URL_username,URL_password];
|
|
|
|
NSData *basicAuthData = [basicAuthStr dataUsingEncoding:NSASCIIStringEncoding];
|
|
|
|
// 通过 ID :密码 的格式,用Basic 的方式拼接成字符串
|
|
|
|
NSString *basicAuthValue = [NSString stringWithFormat:@"Basic %@",[basicAuthData base64EncodedDataWithOptions:NSDataBase64Encoding64CharacterLineLength]];
|
|
|
|
|
|
|
|
// 设置Authorization的方法设置header
|
|
|
|
[client.requestSerializer setValue:basicAuthValue forHTTPHeaderField:@"Authorization"];
|
|
|
|
// [client.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
|
|
|
|
// [client setSecurityPolicy:[client customSecurityPolicy]];
|
|
|
|
|
|
|
|
});
|
|
|
|
return client;
|
|
|
|
}
|
|
|
|
|
|
|
|
- (AFSecurityPolicy*)customSecurityPolicy
|
|
|
|
{
|
|
|
|
/**** SSL Pinning ****/
|
|
|
|
// NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"app2g.mobilebrother.net" ofType:@"cer"];
|
|
|
|
// NSData *cerData = [NSData dataWithContentsOfFile:cerPath];
|
|
|
|
// AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate
|
|
|
|
// withPinnedCertificates:[[NSSet alloc] initWithObjects:cerData, nil]];
|
|
|
|
// [securityPolicy setAllowInvalidCertificates:YES];
|
|
|
|
|
|
|
|
// 是否在证书域字段中验证域名
|
|
|
|
// AFSecurityPolicy *securityPolicy = [[AFSecurityPolicy alloc] init];
|
|
|
|
// [securityPolicy setValidatesDomainName:NO];
|
|
|
|
// **** SSL Pinning ***
|
|
|
|
|
|
|
|
AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];
|
|
|
|
[securityPolicy setAllowInvalidCertificates:YES];
|
|
|
|
|
|
|
|
return securityPolicy;
|
|
|
|
}
|
|
|
|
|
|
|
|
- (NSDictionary *)addIdentify:(id)parameters URL:(NSString *)URLString{
|
|
|
|
NSMutableDictionary *dic = [NSMutableDictionary dictionaryWithDictionary:parameters];
|
|
|
|
[dic setObject:[[NSBundle mainBundle] bundleIdentifier] forKey:@"identify"];
|
|
|
|
// xLog(@"parameters = %@ = %@",dic,URLString);
|
|
|
|
return dic;
|
|
|
|
}
|
|
|
|
|
|
|
|
- (NSURLSessionDataTask *)URL:(NSString *)URLString
|
|
|
|
method:(NSString *)method
|
|
|
|
parameters:(id)parameters
|
|
|
|
success:(void (^)(NSURLSessionDataTask *task, id responseObject))success
|
|
|
|
failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure{
|
|
|
|
return [self URL:URLString method:method parameters:parameters constructingBodyWithBlock:nil
|
|
|
|
success:success failure:failure];
|
|
|
|
}
|
|
|
|
|
|
|
|
- (NSURLSessionDataTask *)URL:(NSString *)URLString
|
|
|
|
method:(NSString *)method
|
|
|
|
parameters:(id)parameters
|
|
|
|
success:(void (^)(NSURLSessionDataTask *task, id responseObject))success
|
|
|
|
failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure
|
|
|
|
showHUD:(BOOL)showHUD{
|
|
|
|
return [self URL:URLString method:method parameters:parameters constructingBodyWithBlock:nil
|
|
|
|
success:success failure:failure showHUD:showHUD]; //本来是写死 NO
|
|
|
|
}
|
|
|
|
|
|
|
|
- (NSURLSessionDataTask *)URL:(NSString *)URLString
|
|
|
|
method:(NSString *)method
|
|
|
|
parameters:(id)parameters
|
|
|
|
constructingBodyWithBlock:(void (^)(id<AFMultipartFormData> formData))block
|
|
|
|
success:(void (^)(NSURLSessionDataTask * task, id responseObject))success
|
|
|
|
failure:(void (^)(NSURLSessionDataTask * task, NSError * error))failure{
|
|
|
|
return [self URL:URLString method:method parameters:parameters constructingBodyWithBlock:block
|
|
|
|
success:success failure:failure showHUD:YES];
|
|
|
|
}
|
|
|
|
|
|
|
|
- (NSURLSessionDataTask *)URL:(NSString *)URLString
|
|
|
|
method:(NSString *)method
|
|
|
|
parameters:(id)parameters
|
|
|
|
constructingBodyWithBlock:(void (^)(id<AFMultipartFormData> formData))block
|
|
|
|
success:(void (^)(NSURLSessionDataTask *task, id responseObject))success
|
|
|
|
failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure
|
|
|
|
showHUD:(BOOL)showHUD{
|
|
|
|
return [self URL:URLString method:method parameters:parameters constructingBodyWithBlock:block
|
|
|
|
success:success failure:failure showHUD:showHUD showError:YES]; //本来是写死 YES
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//- (void)setFormData:(id<AFMultipartFormData>)formData
|
|
|
|
// parameters:(id)parameters
|
|
|
|
// obj:(id)obj
|
|
|
|
// img:(UIImage *)img {
|
|
|
|
// if (img) {
|
|
|
|
// [formData appendPartWithFileData:UIImageJPEGRepresentation(img, 0.1)
|
|
|
|
// name:@"image"
|
|
|
|
// fileName:@"image.jpg"
|
|
|
|
// mimeType:@"image/jpeg"];
|
|
|
|
// }else if (obj){
|
|
|
|
// if ([obj isKindOfClass:[UIImage class]]) {
|
|
|
|
// [formData appendPartWithFileData:UIImageJPEGRepresentation(obj, 0.1)
|
|
|
|
// name:@"content"
|
|
|
|
// fileName:@"image.jpg"
|
|
|
|
// mimeType:@"image/jpeg"];
|
|
|
|
// }else if ([parameters[@"content_type"] isEqualToNumber:@(3)] ||
|
|
|
|
// [parameters[@"type"] isEqualToNumber:@(3)]){
|
|
|
|
// [formData appendPartWithFileData:obj
|
|
|
|
// name:@"content"
|
|
|
|
// fileName:@"voice"
|
|
|
|
// mimeType:@"amr"];
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
//}
|
|
|
|
|
|
|
|
- (NSURLSessionDataTask *)URL:(NSString *)URLString
|
|
|
|
method:(NSString *)method
|
|
|
|
parameters:(id)parameters
|
|
|
|
constructingBodyWithBlock:(void (^)(id<AFMultipartFormData> formData))block
|
|
|
|
success:(void (^)(NSURLSessionDataTask *task, id responseObject))success
|
|
|
|
failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure
|
|
|
|
showHUD:(BOOL)showHUD
|
|
|
|
showError:(BOOL)showError{
|
|
|
|
AppDelegate *app = (AppDelegate *)[UIApplication sharedApplication].delegate;
|
|
|
|
[app beingBackgroundUpdateTask];
|
|
|
|
|
|
|
|
if (!parameters || [parameters isKindOfClass:[NSDictionary class]]) {
|
|
|
|
parameters = [NSMutableDictionary dictionaryWithDictionary:parameters];
|
|
|
|
}
|
|
|
|
if ([User currentUser]) {
|
|
|
|
[parameters setObject:[User currentUser].openid forKey:@"openid"];
|
|
|
|
[parameters setObject:[User currentUser].accesstoken forKey:@"accesstoken"];
|
|
|
|
}
|
|
|
|
//MARK: 添加app版本号,BundleID,时区,语言等到头部
|
|
|
|
[self.requestSerializer setValue:kTOKEN_APP_VERSION forHTTPHeaderField:@"Version"];
|
|
|
|
[self.requestSerializer setValue:kTOKEN_APP_BUNDLEID forHTTPHeaderField:@"BundleId"];
|
|
|
|
[self.requestSerializer setValue:kTOKEN_APP_LANGUAGE forHTTPHeaderField:@"Accept-Language"];
|
|
|
|
[self.requestSerializer setValue:kTOKEN_APP_TIMEZONE forHTTPHeaderField:@"Timezone"];
|
|
|
|
|
|
|
|
if (showError &&
|
|
|
|
self.reachabilityManager.networkReachabilityStatus != AFNetworkReachabilityStatusUnknown &&
|
|
|
|
!self.reachabilityManager.isReachable) {
|
|
|
|
//[UICommon MessageErrorText:NSLocalizedStringFromTable(@"请检查您的网络设置", @"Localization", @"")];
|
|
|
|
[UICommon MessageErrorText:NSLocalizedStringFromTable(@"请检查您的网络设置", @"Localization", @"")];
|
|
|
|
failure(nil,nil);
|
|
|
|
return nil;
|
|
|
|
}
|
|
|
|
if (showHUD) {
|
|
|
|
[UICommon MessageUpload:@"正在加载"];
|
|
|
|
}
|
|
|
|
xLog(@"请求 %@ = %@ = %@",parameters,URLString,method);
|
|
|
|
NSURLSessionDataTask *dataTask = nil;
|
|
|
|
|
|
|
|
WEAKSELF
|
|
|
|
if ([method isEqualToString:@"POST"]) {
|
|
|
|
if (block) {
|
|
|
|
|
|
|
|
dataTask = [super POST:URLString
|
|
|
|
parameters:parameters
|
|
|
|
constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
|
|
|
|
if (block) {
|
|
|
|
block(formData);
|
|
|
|
}
|
|
|
|
} progress:^(NSProgress * _Nonnull uploadProgress) {
|
|
|
|
// xLog(@"%@",uploadProgress);
|
|
|
|
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
|
|
|
|
xLog(@"返回 %@ = %@ = %@",responseObject,URLString,method);
|
|
|
|
[self httpSuccess:success
|
|
|
|
task:task
|
|
|
|
responseObject:responseObject
|
|
|
|
showHUD:showHUD showError:showError];
|
|
|
|
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
|
|
|
|
[self httpFailure:failure task:task error:error
|
|
|
|
showHUD:showHUD showError:showError];
|
|
|
|
}];
|
|
|
|
}else{
|
|
|
|
dataTask = [super POST:URLString parameters:parameters
|
|
|
|
progress:^(NSProgress * _Nonnull uploadProgress) {
|
|
|
|
// xLog(@"%@",uploadProgress);
|
|
|
|
}success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject){
|
|
|
|
xLog(@"返回 %@ = %@ = %@",responseObject,URLString,method);
|
|
|
|
[self httpSuccess:success
|
|
|
|
task:task
|
|
|
|
responseObject:responseObject
|
|
|
|
showHUD:showHUD showError:showError];
|
|
|
|
}
|
|
|
|
failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error){
|
|
|
|
[self httpFailure:failure task:task error:error
|
|
|
|
showHUD:showHUD showError:showError];
|
|
|
|
|
|
|
|
}];
|
|
|
|
}
|
|
|
|
}else if([method isEqualToString:@"GET"]){
|
|
|
|
dataTask = [super GET:URLString parameters:parameters
|
|
|
|
progress:^(NSProgress * _Nonnull uploadProgress) {
|
|
|
|
// xLog(@"%@",uploadProgress);
|
|
|
|
}success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject){
|
|
|
|
xLog(@"返回 %@ = %@ = %@",responseObject,URLString,method);
|
|
|
|
[self httpSuccess:success
|
|
|
|
task:task
|
|
|
|
responseObject:responseObject
|
|
|
|
showHUD:showHUD showError:showError];
|
|
|
|
}
|
|
|
|
failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error){
|
|
|
|
[self httpFailure:failure task:task error:error
|
|
|
|
showHUD:showHUD showError:showError];
|
|
|
|
}];
|
|
|
|
}else if([method isEqualToString:@"PUT"]){
|
|
|
|
dataTask = [super PUT:URLString parameters:parameters
|
|
|
|
success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject){
|
|
|
|
xLog(@"返回 %@ = %@ = %@",responseObject,URLString,method);
|
|
|
|
[self httpSuccess:success
|
|
|
|
task:task
|
|
|
|
responseObject:responseObject
|
|
|
|
showHUD:showHUD showError:showError];
|
|
|
|
}
|
|
|
|
failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error){
|
|
|
|
[self httpFailure:failure task:task error:error
|
|
|
|
showHUD:showHUD showError:showError];
|
|
|
|
}];
|
|
|
|
}else if([method isEqualToString:@"PATCH"]){
|
|
|
|
if (block) {
|
|
|
|
dataTask = [self PATCH:URLString
|
|
|
|
parameters:parameters
|
|
|
|
constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
|
|
|
|
if (block) {
|
|
|
|
block(formData);
|
|
|
|
}
|
|
|
|
} progress:^(NSProgress * _Nonnull uploadProgress) {
|
|
|
|
// xLog(@"%@",uploadProgress);
|
|
|
|
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
|
|
|
|
xLog(@"返回 %@ = %@ = %@",responseObject,URLString,method);
|
|
|
|
[self httpSuccess:success
|
|
|
|
task:task
|
|
|
|
responseObject:responseObject
|
|
|
|
showHUD:showHUD showError:showError];
|
|
|
|
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
|
|
|
|
[self httpFailure:failure task:task error:error
|
|
|
|
showHUD:showHUD showError:showError];
|
|
|
|
}];
|
|
|
|
}else{
|
|
|
|
dataTask = [super PATCH:URLString parameters:parameters
|
|
|
|
success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject){
|
|
|
|
xLog(@"返回 %@ = %@ = %@",responseObject,URLString,method);
|
|
|
|
[self httpSuccess:success
|
|
|
|
task:task
|
|
|
|
responseObject:responseObject
|
|
|
|
showHUD:showHUD showError:showError];
|
|
|
|
}
|
|
|
|
failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error){
|
|
|
|
[self httpFailure:failure task:task error:error
|
|
|
|
showHUD:showHUD showError:showError];
|
|
|
|
}];
|
|
|
|
}
|
|
|
|
|
|
|
|
}else if([method isEqualToString:@"DELETE"]){
|
|
|
|
dataTask = [super DELETE:URLString parameters:parameters
|
|
|
|
success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject){
|
|
|
|
xLog(@"返回 %@ = %@ = %@",responseObject,URLString,method);
|
|
|
|
[self httpSuccess:success
|
|
|
|
task:task
|
|
|
|
responseObject:responseObject
|
|
|
|
showHUD:showHUD showError:showError];
|
|
|
|
}
|
|
|
|
failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error){
|
|
|
|
[self httpFailure:failure task:task error:error
|
|
|
|
showHUD:showHUD showError:showError];
|
|
|
|
}];
|
|
|
|
}
|
|
|
|
|
|
|
|
return dataTask;
|
|
|
|
}
|
|
|
|
|
|
|
|
//PATCH上传文件
|
|
|
|
-(NSURLSessionDataTask*)PATCH:(NSString *)URLString
|
|
|
|
parameters:(id)parameters constructingBodyWithBlock:(void (^)(id<AFMultipartFormData> _Nonnull))block
|
|
|
|
progress:(void (^)(NSProgress * _Nonnull))uploadProgress
|
|
|
|
success:(void (^)(NSURLSessionDataTask * _Nonnull, id _Nullable))success
|
|
|
|
failure:(void (^)(NSURLSessionDataTask * _Nullable, NSError * _Nonnull))failure{
|
|
|
|
NSError *serializationError = nil;
|
|
|
|
NSMutableURLRequest *request = [self.requestSerializer multipartFormRequestWithMethod:@"PATCH" URLString:[[NSURL URLWithString:URLString relativeToURL:self.baseURL] absoluteString] parameters:parameters constructingBodyWithBlock:block error:&serializationError];
|
|
|
|
if (serializationError) {
|
|
|
|
if (failure) {
|
|
|
|
#pragma clang diagnostic push
|
|
|
|
#pragma clang diagnostic ignored "-Wgnu"
|
|
|
|
dispatch_async(self.completionQueue ?: dispatch_get_main_queue(), ^{
|
|
|
|
failure(nil, serializationError);
|
|
|
|
});
|
|
|
|
#pragma clang diagnostic pop
|
|
|
|
}
|
|
|
|
|
|
|
|
return nil;
|
|
|
|
}
|
|
|
|
|
|
|
|
__block NSURLSessionDataTask *task = [self uploadTaskWithStreamedRequest:request progress:uploadProgress completionHandler:^(NSURLResponse * __unused response, id responseObject, NSError *error) {
|
|
|
|
if (error) {
|
|
|
|
if (failure) {
|
|
|
|
failure(task, error);
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
if (success) {
|
|
|
|
success(task, responseObject);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}];
|
|
|
|
|
|
|
|
[task resume];
|
|
|
|
|
|
|
|
return task;
|
|
|
|
}
|
|
|
|
|
|
|
|
- (void)httpSuccess:(void (^)(NSURLSessionDataTask *task, id responseObject))success
|
|
|
|
task:(NSURLSessionDataTask *)task
|
|
|
|
responseObject:(id)responseObject
|
|
|
|
showHUD:(BOOL)showHUD
|
|
|
|
showError:(BOOL)showError
|
|
|
|
{
|
|
|
|
AppDelegate *app = (AppDelegate *)[UIApplication sharedApplication].delegate;
|
|
|
|
[app endBackgroundUpdateTask];
|
|
|
|
|
|
|
|
|
|
|
|
if ([responseObject[@"code"] intValue] != HTTP_SUCCESS && showError) {
|
|
|
|
|
|
|
|
if([task.currentRequest.URL.absoluteString containsString:@"/location/last"]&&([responseObject[@"code"] intValue] == 5002 || [responseObject[@"code"] intValue] == 5001) ){
|
|
|
|
[UICommon HidenLoading];
|
|
|
|
}else{
|
|
|
|
[self showErrorWithCode:[responseObject[@"code"] intValue] message:responseObject[@"msg"]];
|
|
|
|
}
|
|
|
|
|
|
|
|
}else if (showHUD){
|
|
|
|
[UICommon HidenLoading];
|
|
|
|
}
|
|
|
|
|
|
|
|
if (success) {
|
|
|
|
success(task, responseObject);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
- (void)httpFailure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure
|
|
|
|
task:(NSURLSessionDataTask *)task
|
|
|
|
error:(NSError *)error
|
|
|
|
showHUD:(BOOL)showHUD
|
|
|
|
showError:(BOOL)showError{
|
|
|
|
xLog(@"请求错误 URL:%@,error = %@",task.currentRequest.URL.absoluteString, error);
|
|
|
|
AppDelegate *app = (AppDelegate *)[UIApplication sharedApplication].delegate;
|
|
|
|
[app endBackgroundUpdateTask];
|
|
|
|
|
|
|
|
if (showError) {
|
|
|
|
//[UICommon MessageErrorText:error.userInfo[NSLocalizedDescriptionKey]];
|
|
|
|
[UICommon MessageErrorText:error.userInfo[NSLocalizedDescriptionKey]];
|
|
|
|
}else if (showHUD){
|
|
|
|
[UICommon HidenLoading];
|
|
|
|
}
|
|
|
|
|
|
|
|
if (failure) {
|
|
|
|
failure(task, error);
|
|
|
|
xLog(@"%@",[[NSString alloc] initWithData:error.userInfo[@"com.alamofire.serialization.response.error.data"]
|
|
|
|
encoding:NSUTF8StringEncoding]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
- (void)showErrorWithCode:(int)code message:(NSString *)message{
|
|
|
|
NSString *msg = @"";
|
|
|
|
switch (code) {
|
|
|
|
case HTTP_ERROR_400: msg = @"请求参数错误,错误详情见 msg 参数"; break;
|
|
|
|
case HTTP_ERROR_401:{
|
|
|
|
msg = @"accesstoken参数无效";
|
|
|
|
[User setCurrentUser:nil];
|
|
|
|
}break;
|
|
|
|
case HTTP_ERROR_402:{
|
|
|
|
msg = @"密码已被修改";
|
|
|
|
[User setCurrentUser:nil];
|
|
|
|
}break;
|
|
|
|
case HTTP_ERROR_403: msg = @"业务所需参数校验失败(密码,验证码等无效)"; break;
|
|
|
|
|
|
|
|
case HTTP_ERROR_500: msg = @"处理异常,请稍后重试"; break;
|
|
|
|
|
|
|
|
case HTTP_ERROR_600: msg = @"触发了平台未定义的业务行为"; break;
|
|
|
|
|
|
|
|
case HTTP_ERROR_2000:{
|
|
|
|
msg = @"账号数据不存在";
|
|
|
|
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"lastLoginName"];
|
|
|
|
[[NSUserDefaults standardUserDefaults] synchronize];
|
|
|
|
[User setCurrentUser:nil];
|
|
|
|
}break;
|
|
|
|
case HTTP_ERROR_2001: msg = @"设备数据不存在"; break;
|
|
|
|
case HTTP_ERROR_2002: msg = @"厂商数据不存在";
|
|
|
|
// [self invalidSession];
|
|
|
|
break;
|
|
|
|
case HTTP_ERROR_2003: msg = @"聊天群不存在"; break;
|
|
|
|
|
|
|
|
case HTTP_ERROR_4000: msg = @"该设备已绑定于某一用于,不可再次被绑定"; break;
|
|
|
|
case HTTP_ERROR_4001: msg = @"该设备已在某一群组中,不能再加入其它群组额"; break;
|
|
|
|
case HTTP_ERROR_4002: msg = @"该设备不在此群组中,无法对其进行删除"; break;
|
|
|
|
case HTTP_ERROR_4004: msg = @"该设备未与用户绑定,所以无法进入聊天群组"; break;
|
|
|
|
case HTTP_ERROR_4005: msg = @"用户还没有使用此手机号注册应用"; break;
|
|
|
|
case HTTP_ERROR_4006: msg = @"用户不在该设备的联系人中"; break;
|
|
|
|
case HTTP_ERROR_4007: msg = @"该闹钟已被删除,不在此设备中"; break;
|
|
|
|
case HTTP_ERROR_4008: msg = @"该免打扰设置已被删除,不在此设备中"; break;
|
|
|
|
case HTTP_ERROR_4009: msg = @"该照片未找到"; break;
|
|
|
|
case HTTP_ERROR_4010:{
|
|
|
|
msg = @"所创建的业务数据因业务场景原因数量已超限(sos号码,闹钟,免打扰)";
|
|
|
|
// @"contact"
|
|
|
|
// @"disturbBan"
|
|
|
|
// @"voiceAlarm"
|
|
|
|
// if ([task.response.URL.relativePath rangeOfString:str].location != NSNotFound) {
|
|
|
|
// NSLog(@"这个字符串中有\n");
|
|
|
|
// }
|
|
|
|
}break;
|
|
|
|
|
|
|
|
case HTTP_ERROR_5001: msg = @"设备未联网,可能当前信号差或关机"; break;
|
|
|
|
case HTTP_ERROR_5002: msg = @"设备未联网,可能当前信号差"; break;
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
xLog(@"msg ====== %@",msg);
|
|
|
|
if (message.length > 0)
|
|
|
|
{
|
|
|
|
// [UICommon MessageErrorText:message];
|
|
|
|
[UICommon MessageErrorText:message];
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
//[UICommon MessageErrorText:msg];
|
|
|
|
[UICommon MessageErrorText:message];
|
|
|
|
}
|
|
|
|
if (!cUser && code != 405) {
|
|
|
|
|
|
|
|
[UICommon HidenLoading];
|
|
|
|
AfterDispatch(1, ^{
|
|
|
|
[[NSNotificationCenter defaultCenter] postNotificationName:@"outLogin"
|
|
|
|
object:nil];
|
|
|
|
});
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
|
|
|
|
// AppDelegate *app = (AppDelegate *)[UIApplication sharedApplication].delegate;
|
|
|
|
if (alertView.tag == goHomeTag) {
|
|
|
|
// [app goHomeViewController];
|
|
|
|
}else if(alertView.tag == goLoginTag){
|
|
|
|
// [app goLoginViewController];
|
|
|
|
}else if(alertView.tag == reQuestTag && _isMust){
|
|
|
|
// [self POST:reURLString parameters:reParameters success:reSuccess failure:reFailure];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
- (void)invalidSession{
|
|
|
|
[User setCurrentUser:nil];
|
|
|
|
[[NSNotificationCenter defaultCenter] postNotificationName:@"reloadCircleDataView" object:nil];
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
+ (NSString *)getURL:(NSString *)URL objArr:(NSArray *)objArr
|
|
|
|
{
|
|
|
|
__block NSString *urlStr = URL;//self.caInterface[@"prefix"];
|
|
|
|
NSArray *arr = @[@"[openid]",@"[imei]",@"[vendor]",@"[groupid]"];
|
|
|
|
@try {
|
|
|
|
[arr enumerateObjectsUsingBlock:^(NSString * _Nonnull key, NSUInteger idx, BOOL * _Nonnull stop) {
|
|
|
|
__block NSString *str = @"";
|
|
|
|
NSRange range = [urlStr rangeOfString:key];
|
|
|
|
if (range.location != NSNotFound) {
|
|
|
|
if ([key isEqualToString:@"[openid]"]) {
|
|
|
|
__block User *user = nil;
|
|
|
|
[objArr enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
|
|
|
|
if ([obj isKindOfClass:[User class]]) {
|
|
|
|
user = obj;
|
|
|
|
str = user.openid;
|
|
|
|
*stop = YES;
|
|
|
|
}
|
|
|
|
}];
|
|
|
|
}else if([key isEqualToString:@"[imei]"] || [key isEqualToString:@"[vendor]"]){
|
|
|
|
__block Device *device = nil;
|
|
|
|
[objArr enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
|
|
|
|
if ([obj isKindOfClass:[Device class]]) {
|
|
|
|
device = obj;
|
|
|
|
if ([key isEqualToString:@"[vendor]"]) {
|
|
|
|
str = [NSString stringWithFormat:@"%@",device.vendor];
|
|
|
|
}else if ([key isEqualToString:@"[imei]"]){
|
|
|
|
if( device.imei){
|
|
|
|
str = device.imei;
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
*stop = YES;
|
|
|
|
}
|
|
|
|
}];
|
|
|
|
}else if([key isEqualToString:@"[groupid]"]){
|
|
|
|
__block Circle *circle = nil;
|
|
|
|
[objArr enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
|
|
|
|
if ([obj isKindOfClass:[Circle class]]) {
|
|
|
|
circle = obj;
|
|
|
|
str = circle.groupid;
|
|
|
|
*stop = YES;
|
|
|
|
}
|
|
|
|
}];
|
|
|
|
}
|
|
|
|
urlStr = [urlStr stringByReplacingOccurrencesOfString:key withString:str];
|
|
|
|
}
|
|
|
|
}];
|
|
|
|
} @catch (NSException *exception) {
|
|
|
|
NSLog(@"URL format exception!!!");
|
|
|
|
}
|
|
|
|
|
|
|
|
NSLog(@"get url = %@", urlStr);
|
|
|
|
|
|
|
|
return urlStr;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
- (void)UploadPictureByFileName:(NSString*) fileName
|
|
|
|
Path:(NSData*) path
|
|
|
|
success:(void (^)(id responseObject))success
|
|
|
|
failure:(void (^)(id faiObject))failure
|
|
|
|
{
|
|
|
|
|
|
|
|
NSString *urlString = fileName;
|
|
|
|
NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
|
|
|
|
AppDelegate *app = (AppDelegate *)[UIApplication sharedApplication].delegate;
|
|
|
|
[app beingBackgroundUpdateTask];
|
|
|
|
|
|
|
|
if (!parameters || [parameters isKindOfClass:[NSDictionary class]]) {
|
|
|
|
parameters = [NSMutableDictionary dictionaryWithDictionary:parameters];
|
|
|
|
}
|
|
|
|
if ([User currentUser]) {
|
|
|
|
[parameters setObject:[User currentUser].openid forKey:@"openid"];
|
|
|
|
[parameters setObject:[User currentUser].accesstoken forKey:@"accesstoken"];
|
|
|
|
}
|
|
|
|
//MARK: 添加app版本号,BundleID,时区,语言等到头部
|
|
|
|
[self.requestSerializer setValue:kTOKEN_APP_VERSION forHTTPHeaderField:@"Version"];
|
|
|
|
[self.requestSerializer setValue:kTOKEN_APP_BUNDLEID forHTTPHeaderField:@"BundleId"];
|
|
|
|
[self.requestSerializer setValue:kTOKEN_APP_LANGUAGE forHTTPHeaderField:@"Accept-Language"];
|
|
|
|
[self.requestSerializer setValue:kTOKEN_APP_TIMEZONE forHTTPHeaderField:@"Timezone"];
|
|
|
|
|
|
|
|
[self POST:urlString parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
|
|
|
|
[formData appendPartWithFileData:path name:@"image" fileName:@"image.jpg" mimeType:@"image/jpg/file"];
|
|
|
|
} 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);
|
|
|
|
}
|
|
|
|
NSLog(@"上传错误:%@",error);
|
|
|
|
}];
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@end
|