//
|
// EZHttpUtil.m
|
// EZOpenSDKDemo
|
//
|
// Created by 陈嘉乐 on 2021/2/26.
|
// Copyright © 2021 hikvision. All rights reserved.
|
//
|
|
#import "EZHttpUtil.h"
|
#import <Foundation/Foundation.h>
|
#import <CommonCrypto/CommonDigest.h>
|
#import "AFNetworking.h"
|
#import "YYModel.h"
|
|
#define TestRequestHttpsHost @"https://test-gz.hdlcontrol.com"
|
#pragma mark API
|
#define API_POST_EZ_VerifyLocalLock @"/home-wisdom/platform/yingshi/lock/verifyLocalLock"//萤石门锁本地验证
|
#define API_POST_EZ_AddDevice @"/home-wisdom/platform/yingshi/child/addDevice"
|
#define API_POST_EZ_GetChildToken @"/home-wisdom/platform/yingshi/child/token"
|
#define API_POST_EZ_ChildDelDevice @"/home-wisdom/platform/yingshi/child/deleteDevice"
|
#define API_POST_EZ_RefreshToken @"/smart-footstone/member/oauth/login"
|
#define API_POST_EZ_LockAuth @"/home-wisdom/platform/yingshi/lock/auth"//萤石门锁终端授权
|
#define API_POST_EZ_RemoteOpen @"/home-wisdom/platform/yingshi/lock/remote/open/door"//萤石门锁远程开锁
|
#define API_POST_EZ_TempList @"/home-wisdom/platform/yingshi/lock/temp/list"//萤石门临时密码列表
|
#define API_POST_EZ_AddTemp @"/home-wisdom/platform/yingshi/lock/temp/add"//萤石门添加临时密码
|
#define API_POST_EZ_DeleteTemp @"/home-wisdom/platform/yingshi/lock/temp/delete"//萤石门删除临时密码
|
#define API_POST_EZ_DeviceMessage @"/home-wisdom/app/device/message"//萤石设备消息列表
|
|
#define API_POST_EZ_GetAlarmList @"/home-wisdom/platform/yingshi/alarm/records"//获取报警消息
|
#define API_POST_EZ_DeleteAlarmMes @"/home-wisdom/platform/yingshi/alarm/delete"//删除报警消息
|
#define API_POST_EZ_ReadAlarmMes @"/home-wisdom/platform/yingshi/alarm/updateChecked"//标记报警消息已读
|
|
#pragma mark APP_KEY
|
#define APP_KEY @"HDL-HOME-APP-TEST"
|
#define SECRET_KEY @"WeJ8TY88vbakCcnvH8G1tDUqzLWY8yss"
|
|
|
#define TIME_OUT 15.0f
|
|
@implementation EZHttpUtil
|
|
#pragma mark -接口请求部分
|
|
|
/// sharedManager
|
+ (id)sharedManager {
|
static dispatch_once_t once;
|
static id instance;
|
dispatch_once(&once, ^{
|
instance = [self new];
|
});
|
return instance;
|
}
|
|
/**
|
* @since 河东获取子账号token的接口
|
*
|
* @param block 回调block
|
*/
|
- (void)getChildToken:(void (^)(NSString *accessToken))block{
|
|
//2.设置请求参数
|
NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
|
[parameters setValue: [NSString stringWithFormat:@"%d", [GlobalKit shareKit].hdlPlatform] forKey:@"platform"];
|
[parameters setValue:[GlobalKit shareKit].hdlHomeId forKey:@"homeId"];
|
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"];
|
token = [NSString stringWithFormat:@"%@",responseData.data];
|
}
|
block(token);
|
}
|
|
}];
|
|
// return task;
|
}
|
|
/**
|
* @since 河东添加设备之前本地验证的接口(智能门锁使用,调用接口后输入门锁密码,再进行绑定)
|
* @param deviceSerial 设备序列号
|
* @param completion 回调block,error为空时表示调用验证接口成功
|
*
|
*/
|
- (void)verifyLocalLockByHDL:(NSString *)deviceSerial
|
completion:(void (^)(ResponseData *responseData))completion{
|
//2.设置请求参数
|
NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
|
[parameters setValue:deviceSerial forKey:@"deviceSerial"];
|
[parameters setValue:[NSString stringWithFormat:@"%@",[GlobalKit shareKit].hdlAppKey] forKey:@"appKey"];
|
[parameters setValue: [NSString stringWithFormat:@"%d",[GlobalKit shareKit].hdlPlatform] forKey:@"platform"];
|
[parameters setValue:[GlobalKit shareKit].hdlHomeId forKey:@"homeId"];
|
|
parameters = [self GetSignRequestDictionary:parameters];
|
|
[self requestHttpsPost:API_POST_EZ_VerifyLocalLock parameters:parameters completion:^(ResponseData *responseData) {
|
if (completion) {
|
completion (responseData);
|
}
|
}];
|
}
|
|
/**
|
* @since 河东添加设备的接口
|
* 根据设备序列号和设备验证码添加设备接口
|
*
|
* @param deviceSerial 设备序列号
|
* @param verifyCode 设备验证码
|
* @param completion 回调block,error为空时表示添加成功
|
*
|
*/
|
- (void)addDeviceByHDL:(NSString *)deviceSerial
|
verifyCode:(NSString *)verifyCode
|
completion:(void (^)(ResponseData *responseData))completion{
|
|
//设置请求参数
|
NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
|
[parameters setValue:deviceSerial forKey:@"deviceSerial"];
|
[parameters setValue:verifyCode forKey:@"validateCode"];
|
[parameters setValue: [NSString stringWithFormat:@"%d",[GlobalKit shareKit].hdlPlatform] forKey:@"platform"];
|
[parameters setValue:[GlobalKit shareKit].hdlHomeId forKey:@"homeId"];
|
|
parameters = [self GetSignRequestDictionary:parameters];
|
|
HDLEZLog(@"添加设备参数:%@",parameters);
|
|
|
[self requestHttpsPost:API_POST_EZ_AddDevice parameters:parameters completion:^(ResponseData *responseData) {
|
if (responseData.success){//添加成功,触发代理
|
if ([EZSDK sharedInstance].delegate&&[[EZSDK sharedInstance].delegate respondsToSelector:@selector(addDeviceSuccessed)]) {
|
[[EZSDK sharedInstance].delegate addDeviceSuccessed];
|
}
|
}
|
|
if (completion) {
|
completion (responseData);
|
}
|
}];
|
|
// return task;
|
}
|
|
/**
|
* @since 河东删除设备的接口
|
* 根据设备序列号删除设备接口
|
*
|
* @param deviceSerial 设备序列号
|
* @param completion 回调block,error为空时表示添加成功
|
*
|
*/
|
- (void)deleteDeviceByHDL:(NSString *)deviceSerial completion:(void (^)(ResponseData *responseData))completion{
|
//1.设置请求参数
|
NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
|
[parameters setValue:deviceSerial forKey:@"deviceSerial"];
|
[parameters setValue: [NSString stringWithFormat:@"%d",[GlobalKit shareKit].hdlPlatform] forKey:@"platform"];
|
[parameters setValue:[GlobalKit shareKit].hdlHomeId forKey:@"homeId"];
|
|
parameters = [self GetSignRequestDictionary:parameters];
|
|
[self requestHttpsPost:API_POST_EZ_ChildDelDevice parameters:parameters completion:^(ResponseData *responseData) {
|
if (completion) {
|
completion (responseData);
|
}
|
}];
|
|
// return task;
|
}
|
|
|
/**
|
* 根据设备序列号获取告警信息列表
|
*/
|
- (void)getAlarmList:(NSString *)deviceSerial
|
pageNo:(NSInteger)pageNo
|
pageSize:(NSInteger)pageSize
|
completion:(void (^)(ResponseData *responseData))completion{
|
|
//1.设置请求参数
|
NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
|
[parameters setValue:deviceSerial forKey:@"deviceSerial"];
|
[parameters setValue:[GlobalKit shareKit].hdlHomeId forKey:@"homeId"];
|
[parameters setValue:[NSString stringWithFormat:@"%ld",(long)pageSize] forKey:@"pageSize"];
|
[parameters setValue:[NSString stringWithFormat:@"%ld",(long)pageNo] forKey:@"pageNo"];
|
|
parameters = [self GetSignRequestDictionary:parameters];
|
NSLog(@"HDLpageNo:%ld",(long)pageNo);
|
[self requestHttpsPost:API_POST_EZ_GetAlarmList parameters:parameters completion:^(ResponseData *responseData) {
|
if (completion) {
|
completion (responseData);
|
}
|
}];
|
}
|
|
/**
|
* 批量删除报警记录
|
*/
|
- (void)deleteAlarmMessage:(NSArray *)alarmIds
|
completion:(void (^)(ResponseData *responseData))completion{
|
|
//1.设置请求参数
|
NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
|
[parameters setValue:[alarmIds yy_modelToJSONObject] forKey:@"alarmIds"];
|
|
parameters = [self GetSignRequestDictionary:parameters];
|
|
[self requestHttpsPost:API_POST_EZ_DeleteAlarmMes parameters:parameters completion:^(ResponseData *responseData) {
|
if (completion) {
|
completion (responseData);
|
}
|
}];
|
}
|
|
|
/**
|
* 批量标记报警记录已读
|
*/
|
- (void)readAlarmMessage:(NSArray *)alarmIds
|
completion:(void (^)(ResponseData *responseData))completion{
|
|
//1.设置请求参数
|
NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
|
[parameters setValue:@"1" forKey:@"isChecked"];
|
[parameters setValue:[alarmIds yy_modelToJSONObject] forKey:@"alarmIds"];
|
|
parameters = [self GetSignRequestDictionary:parameters];
|
|
[self requestHttpsPost:API_POST_EZ_ReadAlarmMes parameters:parameters completion:^(ResponseData *responseData) {
|
if (completion) {
|
completion (responseData);
|
}
|
}];
|
}
|
|
/**
|
* @since 河东门锁终端授权接口
|
* @param password 门锁密码
|
* @param deviceId 设备id
|
* @param completion 回调block,error为空时表示添加成功
|
*
|
*/
|
- (void)authLockByHDL:(NSString *)password
|
deviceId:(NSString *)deviceId
|
completion:(void (^)(ResponseData *responseData))completion{
|
//2.设置请求参数
|
NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
|
[parameters setValue:deviceId forKey:@"deviceId"];
|
[parameters setValue:[NSString stringWithFormat:@"%@",[GlobalKit shareKit].hdlAppKey] forKey:@"appKey"];
|
[parameters setValue:password forKey:@"password"];
|
[parameters setValue:[GlobalKit shareKit].hdlHomeId forKey:@"homeId"];
|
|
parameters = [self GetSignRequestDictionary:parameters];
|
|
NSLog(@"终端授权参数:%@",parameters);
|
|
[self requestHttpsPost:API_POST_EZ_LockAuth parameters:parameters completion:^(ResponseData *responseData) {
|
if (completion) {
|
completion (responseData);
|
}
|
}];
|
|
}
|
|
/**
|
* @since 河东远程开锁接口
|
* @param streamToken 设备序列号
|
* @param deviceId 设备id
|
* @param completion 回调block,error为空时表示添加成功
|
*
|
*/
|
- (void)remoteOpenByHDL:(NSString *)streamToken
|
deviceId:(NSString *)deviceId
|
completion:(void (^)(ResponseData *responseData))completion{
|
//2.设置请求参数
|
NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
|
[parameters setValue:deviceId forKey:@"deviceId"];
|
[parameters setValue:[NSString stringWithFormat:@"%@",[GlobalKit shareKit].hdlAppKey] forKey:@"appKey"];
|
[parameters setValue:streamToken forKey:@"streamToken"];
|
[parameters setValue:[GlobalKit shareKit].hdlHomeId forKey:@"homeId"];
|
|
parameters = [self GetSignRequestDictionary:parameters];
|
|
NSLog(@"开门参数:%@",parameters);
|
|
[self requestHttpsPost:API_POST_EZ_RemoteOpen parameters:parameters completion:^(ResponseData *responseData) {
|
if (completion) {
|
completion (responseData);
|
}
|
}];
|
|
}
|
|
/**
|
* @since 河东获取临时密码列表接口
|
* @param deviceId 设备id
|
* @param completion 回调block,error为空时表示成功
|
*
|
*/
|
- (void)getTempListByHDL:(NSString *)deviceId
|
completion:(void (^)(ResponseData *responseData))completion{
|
//设置请求参数
|
NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
|
[parameters setValue:deviceId forKey:@"deviceId"];
|
[parameters setValue:[NSString stringWithFormat:@"%@",[GlobalKit shareKit].hdlAppKey] forKey:@"appKey"];
|
[parameters setValue:[GlobalKit shareKit].hdlHomeId forKey:@"homeId"];
|
|
parameters = [self GetSignRequestDictionary:parameters];
|
|
NSLog(@"获取临时密码列表参数:%@",parameters);
|
|
[self requestHttpsPost:API_POST_EZ_TempList parameters:parameters completion:^(ResponseData *responseData) {
|
if (completion) {
|
completion (responseData);
|
}
|
}];
|
}
|
|
/**
|
* @since 河东添加临时密码接口
|
* @param tempInfo 临时密码信息
|
* @param deviceId 设备id
|
* @param completion 回调block,error为空时表示成功
|
*
|
*/
|
- (void)addTempByHDL:(HDLEZTemInfoModel *)tempInfo
|
deviceId:(NSString *)deviceId
|
completion:(void (^)(ResponseData *responseData))completion{
|
//设置请求参数
|
NSMutableDictionary *parameters = [NSMutableDictionary dictionaryWithDictionary:[tempInfo yy_modelToJSONObject]];
|
[parameters setValue:deviceId forKey:@"deviceId"];
|
[parameters setValue:[NSString stringWithFormat:@"%@",[GlobalKit shareKit].hdlAppKey] forKey:@"appKey"];
|
[parameters setValue:[GlobalKit shareKit].hdlHomeId forKey:@"homeId"];
|
|
parameters = [self GetSignRequestDictionary:parameters];
|
|
NSLog(@"添加临时密码参数1:%@",parameters);
|
|
[self requestHttpsPost:API_POST_EZ_AddTemp parameters:parameters completion:^(ResponseData *responseData) {
|
if (completion) {
|
completion (responseData);
|
}
|
}];
|
}
|
|
/**
|
* @since 河东删除临时密码接口
|
* @param extVisitorId 临时密码索引
|
* @param deviceId 设备id
|
* @param completion 回调block,error为空时表示成功
|
*
|
*/
|
- (void)deleteTempByHDL:(NSString *)extVisitorId
|
deviceId:(NSString *)deviceId
|
completion:(void (^)(ResponseData *responseData))completion{
|
//设置请求参数
|
NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
|
[parameters setValue:extVisitorId forKey:@"extVisitorId"];
|
[parameters setValue:deviceId forKey:@"deviceId"];
|
[parameters setValue:[NSString stringWithFormat:@"%@",[GlobalKit shareKit].hdlAppKey] forKey:@"appKey"];
|
[parameters setValue:[GlobalKit shareKit].hdlHomeId forKey:@"homeId"];
|
|
parameters = [self GetSignRequestDictionary:parameters];
|
|
NSLog(@"删除临时密码参数:%@",parameters);
|
|
[self requestHttpsPost:API_POST_EZ_DeleteTemp parameters:parameters completion:^(ResponseData *responseData) {
|
if (completion) {
|
completion (responseData);
|
}
|
}];
|
|
}
|
|
/**
|
* @since 河东获取设备消息
|
* @param deviceId 设备id
|
* @param pageSize 页面大小
|
* @param pageNo 当前页
|
* @param completion 回调block,error为空时表示成功
|
*
|
*/
|
- (void)getDeviceMessageByHDL:(NSString *)deviceId
|
pageSize:(NSInteger)pageSize
|
pageNo:(NSInteger)pageNo
|
completion:(void (^)(ResponseData *responseData))completion{
|
//设置请求参数
|
NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
|
[parameters setValue:deviceId forKey:@"deviceId"];
|
[parameters setValue:[NSString stringWithFormat:@"%ld",(long)pageSize] forKey:@"pageSize"];
|
[parameters setValue:[NSString stringWithFormat:@"%ld",(long)pageNo] forKey:@"pageNo"];
|
[parameters setValue:[NSString stringWithFormat:@"%@",[GlobalKit shareKit].hdlAppKey] forKey:@"appKey"];
|
[parameters setValue:[GlobalKit shareKit].hdlHomeId forKey:@"homeId"];
|
|
parameters = [self GetSignRequestDictionary:parameters];
|
|
NSLog(@"获取设备消息参数:%@",parameters);
|
|
[self requestHttpsPost:API_POST_EZ_DeviceMessage parameters:parameters completion:^(ResponseData *responseData) {
|
if (completion) {
|
completion (responseData);
|
}
|
}];
|
}
|
|
/// 刷新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 sharedInstance] 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;
|
}];
|
}else{
|
completion(responseData);
|
}
|
}];
|
}else{
|
completion(responseData);
|
}
|
|
}
|
}];
|
}
|
|
/// 通用 请求服务器方法
|
/// @param apiPath 接口地址
|
/// @param parameters 请求参数
|
/// @param completion 请求响应参数
|
- (void)requestHttpsBase:(NSString *)apiPath
|
parameters:(NSMutableDictionary *)parameters
|
completion:(void (^)(ResponseData *responseData))completion{
|
|
//1,创建你得请求url
|
NSString *URL = [GlobalKit shareKit].GlobalRequestHttpsHost;
|
if([self stringIsNullOrEmpty:URL]){
|
URL = TestRequestHttpsHost;
|
}
|
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 = TIME_OUT;
|
[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.解析拿到的响应数据
|
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;
|
}
|
|
/**
|
* 基础服务的接口都要校验sign
|
*/
|
-(NSMutableDictionary *)GetSignRequestDictionary:(NSMutableDictionary *)params{
|
if(params == NULL){
|
params =[NSMutableDictionary dictionary];
|
}
|
UInt64 recordTime = [[NSDate date] timeIntervalSince1970]*1000;
|
[params setValue:APP_KEY forKey:@"appKey"];
|
[params setValue:[NSString stringWithFormat:@"%llu",recordTime] forKey:@"timestamp"];
|
//1.对KEY升序
|
NSArray *keyArray = [params allKeys];
|
NSArray *sortKeyArray = [keyArray sortedArrayUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) {
|
return [obj1 compare:obj2 options:NSNumericSearch];
|
}];
|
//2.2 拼接按URL键值对
|
NSString *newString = @"";
|
for(NSString *key in sortKeyArray){
|
if(params[key] != NULL){
|
//Key对应的value强转为NSString
|
NSString *valueStr = [NSString stringWithFormat:@"%@",[params objectForKey:key]];
|
//检测当前参数是否需要参与校验
|
if([self IfValueNeedSign:valueStr]){
|
newString = [newString stringByAppendingString:[NSString stringWithFormat:@"%@=%@&", key,valueStr]];
|
}
|
}
|
}
|
//2.3 拼接SECRET_KEY
|
newString = [newString substringToIndex:[newString length] - 1];
|
newString = [newString stringByAppendingString: SECRET_KEY];
|
//2.4 MD5转换+转小写
|
if([self stringIsNullOrEmpty:newString]){
|
newString = @"";
|
}
|
NSString* signstr = [self signMD5Encrypt:newString];
|
[params setValue:signstr forKey:@"sign"];
|
|
return params;
|
}
|
|
|
/// 字符串判空
|
/// @param valueStr 传入判断字符
|
- (BOOL)stringIsNullOrEmpty:(NSString *)valueStr
|
{
|
if((valueStr == nil || [valueStr isKindOfClass:[NSNull class]] || valueStr.length == 0)){
|
return YES;
|
}else{
|
return NO;
|
}
|
|
}
|
|
/**
|
MD5转换+转小写
|
*/
|
- (NSString*)signMD5Encrypt:(NSString *)str
|
{
|
const char *cStr = [str UTF8String];
|
unsigned char digest[CC_MD5_DIGEST_LENGTH];
|
CC_MD5( cStr, strlen(cStr),digest );
|
NSMutableString *result = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2];
|
for(int i = 0; i < CC_MD5_DIGEST_LENGTH; i++)
|
[result appendFormat:@"%02x", digest[i]];
|
return result;
|
|
|
}
|
|
/// <summary>
|
/// 判断当前值是否需要参与签名,保持跟云端一致
|
/// 空字符串不参与
|
/// 数组,集合,对象不参与
|
/// </summary>
|
/// <param name="valueStr"></param>
|
/// <returns></returns>
|
-(bool)IfValueNeedSign:(NSString *)valueStr{
|
if (( [self stringIsNullOrEmpty:valueStr])//判空字符
|
|| ([[valueStr substringToIndex:1] isEqual:@"{"])//判断是否为对象
|
|| ([[valueStr substringToIndex:1] isEqual:@"["])//判断是否为数组
|
|| ([[valueStr substringToIndex:1] isEqual:@"("])//判断是否为数组
|
) {
|
|
// HDLSDKLog(@"不校验: %@",valueStr);
|
return false;
|
}
|
return true;
|
}
|
|
|
@end
|
|
|
#pragma mark - 修改记录
|
//2021-07-07
|
//V1.1.3
|
//1.替换为新接口,根据homeId注册萤石子账号方案。
|