From caccf34369c5bb7c26c32f266d6726bde218cad6 Mon Sep 17 00:00:00 2001 From: JLChen <551775569@qq.com> Date: 星期二, 02 三月 2021 13:19:12 +0800 Subject: [PATCH] 2021-03-02 1.封装网络请求方法 --- Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/Global/EZHttpUtil.m | 217 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 215 insertions(+), 2 deletions(-) diff --git a/Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/Global/EZHttpUtil.m b/Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/Global/EZHttpUtil.m index d969a2e..8f37e15 100644 --- a/Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/Global/EZHttpUtil.m +++ b/Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/Global/EZHttpUtil.m @@ -9,19 +9,228 @@ #import "EZHttpUtil.h" #import <Foundation/Foundation.h> #import <CommonCrypto/CommonDigest.h> +#import "AFNetworking.h" +#pragma mark API +#define API_POST_EZ_AddDevice @"/home-wisdom/platform/childAddDevice" +#define API_POST_EZ_GetChildToken @"/home-wisdom/platform/childToken" +#define API_POST_EZ_ChildDelDevice @"/home-wisdom/platform/childDelDevice" +#define API_POST_EZ_RefreshToken @"/smart-footstone/member/oauth/login" + + +#pragma mark APP_KEY #define APP_KEY @"HDL-HOME-APP-TEST" #define SECRET_KEY @"WeJ8TY88vbakCcnvH8G1tDUqzLWY8yss" + @implementation EZHttpUtil +#pragma mark -鎺ュ彛璇锋眰閮ㄥ垎 + + + + +/** + * @since 娌充笢鑾峰彇瀛愯处鍙穞oken鐨勬帴鍙� + * + * @param block 鍥炶皟block + */ ++ (void)getChildToken:(void (^)(NSString *accessToken))block{ + + //2.璁剧疆璇锋眰鍙傛暟 + NSMutableDictionary *parameters = [NSMutableDictionary dictionary]; + parameters = [self GetSignRequestDictionary:parameters]; + + [self requestHttpsPost:API_POST_EZ_GetChildToken parameters:parameters completion:^(ResponseData *responseData) { + if (block) { + NSString * token = @""; + if(responseData.success){ + token = responseData.data[@"accessToken"]; + } + block(token); + } + + }]; + +// return task; +} +/** + * @since 娌充笢娣诲姞璁惧鐨勬帴鍙� + * 鏍规嵁璁惧搴忓垪鍙峰拰璁惧楠岃瘉鐮佹坊鍔犺澶囨帴鍙� + * + * @param deviceSerial 璁惧搴忓垪鍙� + * @param verifyCode 璁惧楠岃瘉鐮� + * @param completion 鍥炶皟block锛宔rror涓虹┖鏃惰〃绀烘坊鍔犳垚鍔� + * + * @return operation + */ ++ (void)addDeviceByHDL:(NSString *)deviceSerial + verifyCode:(NSString *)verifyCode + completion:(void (^)(ResponseData *responseData))completion{ + + //2.璁剧疆璇锋眰鍙傛暟 + NSMutableDictionary *parameters = [NSMutableDictionary dictionary]; + [parameters setValue:deviceSerial forKey:@"deviceSerial"]; + [parameters setValue:verifyCode forKey:@"validateCode"]; + parameters = [self GetSignRequestDictionary:parameters]; + + [self requestHttpsPost:API_POST_EZ_AddDevice parameters:parameters completion:^(ResponseData *responseData) { + if (completion) { + completion (responseData); + } + }]; + +// return task; +} + +/** + * @since 娌充笢鍒犻櫎璁惧鐨勬帴鍙� + * 鏍规嵁璁惧搴忓垪鍙峰垹闄よ澶囨帴鍙� + * + * @param deviceSerial 璁惧搴忓垪鍙� + * @param completion 鍥炶皟block锛宔rror涓虹┖鏃惰〃绀烘坊鍔犳垚鍔� + * + * @return operation + */ ++ (void)deleteDeviceByHDL:(NSString *)deviceSerial completion:(void (^)(ResponseData *responseData))completion{ + //1.璁剧疆璇锋眰鍙傛暟 + NSMutableDictionary *parameters = [NSMutableDictionary dictionary]; + [parameters setValue:deviceSerial forKey:@"deviceSerial"]; + parameters = [self GetSignRequestDictionary:parameters]; + + [self requestHttpsPost:API_POST_EZ_ChildDelDevice parameters:parameters completion:^(ResponseData *responseData) { + if (completion) { + completion (responseData); + } + }]; + +// return task; +} + + + +/// 鍒锋柊token +/// @param block 缁撴灉 ++ (void)refreshHDLToken:(void (^)(BOOL isSuccess))block{ + + //1.璁剧疆璇锋眰鍙傛暟 + NSMutableDictionary *parameters = [NSMutableDictionary dictionary]; + [parameters setValue:GlobalKit.shareKit.hdlRefreshToken forKey:@"refreshToken"]; + [parameters setValue:@"refresh_token" forKey:@"grantType"]; + [parameters setValue:@"APP" forKey:@"platform"]; + + parameters = [self GetSignRequestDictionary:parameters]; + + [self requestHttpsBase:API_POST_EZ_RefreshToken parameters:parameters completion:^(ResponseData *responseData) { + if (block) { + if (responseData) { + if(responseData.success){ + [EZSDK setHDlAccessToken: + [NSString stringWithFormat:@"%@%@",responseData.data[@"headerPrefix"], responseData.data[@"accessToken"]] + refreshToken:responseData.data[@"refreshToken"]]; + + block(YES); + return; + } + } + block(NO); + } + }]; + + +// return task; +} + + +#pragma mark HttpUtil + +/// 閫氱敤 璇锋眰鏈嶅姟鍣ㄦ柟娉� +/// @param apiPath 鎺ュ彛鍦板潃 +/// @param parameters 璇锋眰鍙傛暟 +/// @param completion 璇锋眰鍝嶅簲鍙傛暟 ++ (void)requestHttpsPost:(NSString *)apiPath + parameters:(NSMutableDictionary *)parameters + completion:(void (^)(ResponseData *responseData))completion{ + + [self requestHttpsBase:apiPath parameters:parameters completion:^(ResponseData *responseData) { + if (completion) { + if([responseData.code isEqual:@"10001"]){ + //鍒锋柊token + [self refreshHDLToken:^(BOOL isSuccess) { + if (isSuccess) { + //鍒锋柊token鎴愬姛锛岄噸鏂拌姹備竴娆� + [self requestHttpsBase:apiPath parameters:parameters completion:^(ResponseData *responseData) { + completion(responseData); + return; + }]; + } + }]; + } + + completion(responseData); + } + }]; +} + +/// 閫氱敤 璇锋眰鏈嶅姟鍣ㄦ柟娉� +/// @param apiPath 鎺ュ彛鍦板潃 +/// @param parameters 璇锋眰鍙傛暟 +/// @param completion 璇锋眰鍝嶅簲鍙傛暟 ++ (void)requestHttpsBase:(NSString *)apiPath + parameters:(NSMutableDictionary *)parameters + completion:(void (^)(ResponseData *responseData))completion{ + + //1,鍒涘缓浣犲緱璇锋眰url + NSString *URL = @""; + if([GlobalKit shareKit].GlobalRequestHttpsHost == NULL){ + URL = @"https://test-gz.hdlcontrol.com"; + } + URL = [NSString stringWithFormat:@"%@%@", URL, apiPath]; + +// NSURLSessionDataTask * task=nil; + AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]]; + AFHTTPResponseSerializer *responseSerializer = [AFHTTPResponseSerializer serializer]; + manager.responseSerializer = responseSerializer; + + //3.request + NSMutableURLRequest * request = [[AFJSONRequestSerializer serializer] requestWithMethod:@"post" URLString:URL parameters:parameters error:nil]; + request.timeoutInterval = 10.0f; + [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; + [request setValue:@"application/json" forHTTPHeaderField:@"Accept"]; + [request setValue:GlobalKit.shareKit.hdlAccessToken forHTTPHeaderField:@"Authorization"]; + //4.dataTaskWithRequest + [[manager dataTaskWithRequest:request completionHandler:^(NSURLResponse * _Nonnull response, id _Nullable responseObject, NSError * _Nullable error) { + if (completion) { + ResponseData *responseData = [[ResponseData alloc] init]; + responseData.code = @"-1"; + + if(responseObject != NULL){ + //4.瑙f瀽鎷垮埌鐨勫搷搴旀暟鎹� + NSLog(@"%@",[[NSString alloc]initWithData:responseObject encoding:NSUTF8StringEncoding]); + NSDictionary * outDic = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingAllowFragments error:nil]; + responseData = [[ResponseData alloc] initWithDictionary:outDic]; + } + + if (!responseData) { + responseData = [[ResponseData alloc] init]; + } + completion(responseData); + } + }]resume]; +// return task; +} + +/** + * 鍩虹鏈嶅姟鐨勬帴鍙i兘瑕佹牎楠宻ign + */ +(NSMutableDictionary *)GetSignRequestDictionary:(NSMutableDictionary *)params{ if(params == NULL){ params =[NSMutableDictionary dictionary]; } + UInt64 recordTime = [[NSDate date] timeIntervalSince1970]*1000; [params setValue:APP_KEY forKey:@"appKey"]; - [params setValue:@"" forKey:@"timestamp"]; + [params setValue:[NSString stringWithFormat:@"%llu",recordTime] forKey:@"timestamp"]; //1.瀵筀EY鍗囧簭 NSArray *keyArray = [params allKeys]; NSArray *sortKeyArray = [keyArray sortedArrayUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) { @@ -40,7 +249,7 @@ } //2.3 鎷兼帴SECRET_KEY newString = [newString substringToIndex:[newString length] - 1]; - newString = [ newString stringByAppendingString: SECRET_KEY]; + newString = [newString stringByAppendingString: SECRET_KEY]; //2.4 MD5杞崲+杞皬鍐� if(newString == nil || newString == NULL){ newString = @""; @@ -51,6 +260,9 @@ return params; } +/** + MD5杞崲+杞皬鍐� + */ + (NSString*)signMD5Encrypt:(NSString *)str { const char *cStr = [str UTF8String]; @@ -81,4 +293,5 @@ return true; } + @end -- Gitblit v1.8.0