Files
xj-ios/XinjiangProject/XinjiangProject/Manager/NetworkHelpManager/SDGETHealthTokenManager.m
T
2025-06-30 09:33:34 +08:00

196 lines
7.2 KiB
Objective-C

//
// SDGETHealthTokenManager.m
// EscortProject
//
// Created by 仁康信息 on 2024/1/4.
//
#import "SDGETHealthTokenManager.h"
#include <CommonCrypto/CommonDigest.h>
#import "RSAObjC.h"
@interface SDGETHealthTokenManager ()
@property (nonatomic,strong)AFHTTPSessionManager *session;
@end
@implementation SDGETHealthTokenManager
#pragma mark - 初始化单例
+(SDGETHealthTokenManager *)getHealthTokenManager
{
static SDGETHealthTokenManager *manager = nil;
static dispatch_once_t pred;
dispatch_once(&pred, ^{
manager = [[self alloc] init];
});
return manager;
}
-(id)init
{
self = [super init];
if (self) {
_session = [AFHTTPSessionManager manager];
/***********请求的序列化**********/
//传Json 对象
_session.requestSerializer = [AFJSONRequestSerializer serializer];
//设置超时时间
[_session.requestSerializer willChangeValueForKey:@"timeoutInterval"];
_session.requestSerializer.timeoutInterval = 10.f;
[_session.requestSerializer didChangeValueForKey:@"timeoutInterval"];
/**********响应的序列化**************/
_session.responseSerializer = [AFJSONResponseSerializer serializer];
_session.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json",@"text/json",@"text/plain" ,@"text/javascript",@"text/html",nil];
}
return self;
}
-(void)httpRequestWithURL:(NSString *)url
parameters:(NSDictionary*)paraDic
hearders:(NSDictionary *)hearder
success:(successBlock)success
failed:(failedBlock)failed
{
NSString *fullURL = [NSString stringWithFormat:@"%@/%@",BASEURL,url];
[_session POST:fullURL parameters:paraDic headers:hearder progress:^(NSProgress * _Nonnull uploadProgress) {
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
success(responseObject);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
failed(error);
}];
}
-(void)httpRequestGetWithURL:(NSString *)url
parameters:(NSDictionary*)paraDic
hearders:(NSDictionary *)hearder
success:(successBlock)success
failed:(failedBlock)failed
{
NSString *fullURL = [NSString stringWithFormat:@"%@/%@",BASEURL,url];
[_session GET:fullURL parameters:paraDic headers:hearder progress:nil success:^(NSURLSessionTask *task, NSDictionary * responseObject) {
success(responseObject);
} failure:^(NSURLSessionTask *operation, NSError *error) {
failed(error);
}];
}
- (void)getTokenSuccess:(successBlock)success failed:(failedBlock)failed {
NSMutableDictionary * dic = [[NSMutableDictionary alloc] init];
NSMutableDictionary * headerDic = [[NSMutableDictionary alloc] init];
NSDate * date = [NSDate date];
NSDateFormatter *matter = [[NSDateFormatter alloc] init];
matter.dateFormat = @"yyyyMMddHHmmss";
NSString * dateString = [matter stringFromDate:date];
[dic setObject:dateString forKey:@"timeSign"];
NSMutableDictionary * sigDic = [[NSMutableDictionary alloc] init];
[sigDic setObject:dateString forKey:@"timeSign"];
NSString * needSersy = [sigDic modelToJSONString];
// 时间戳
NSError *parseError;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:sigDic options:0 error:&parseError];
if (parseError) {
//解析出错
}
NSString * str = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
// 时间戳
NSMutableString * str3 = [[NSMutableString alloc]initWithString:str];
[str3 replaceOccurrencesOfString:@"\\" withString:@"" options:1 range:NSMakeRange(0, str3.length)];
[str3 appendString:@"dd05f1c54d63749eda95f9fa6d49v442a"];
NSString * md5str = [self getMd5_32Bit_String:str3];
[headerDic setObject:dateString forKey:@"X-TIMESTAMP"];
[headerDic setObject:md5str forKey:@"X-Sign"];
[self httpRequestGetWithURL:@"gateway/sys/getPublicKey" parameters:dic hearders:@{@"X-TIMESTAMP":dateString,@"X-Sign":md5str} success:^(NSDictionary * _Nonnull responseObject) {
if ([responseObject.allKeys containsObject:@"code"]) {
if ([[responseObject objectForKey:@"code"] integerValue] == 200)
{
NSString *pubkey ;
if ([responseObject.allKeys containsObject:@"result"]) {
pubkey = [NSString stringWithFormat:@"-----BEGIN PUBLIC KEY-----\n%@\n-----END PUBLIC KEY-----",responseObject[@"result"]];
// 时间戳
}
HQUserInfo * user = [HQCommonUtils keyedUnarchiverWithKey:LoginUserInfo];
NSString *ret = [RSAObjC encrypt:user.idCard PublicKey:pubkey];
DLog(@"encrypted: %@", ret);
if (ValidStr(ret)) {
// KPostNotification(KNotificationLoginStateChange, @NO);
return;
}
NSMutableDictionary * parmDic = [[NSMutableDictionary alloc] init];
[parmDic setObject:[NSString stringWithFormat:@"RSA_%@",ret] forKey: @"idcard"];
NSDate * date = [NSDate date];
NSDateFormatter *matter = [[NSDateFormatter alloc] init];
matter.dateFormat = @"yyyyMMddHHmmss";
NSString * dateString = [matter stringFromDate:date];
NSError *parseError;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:parmDic options:0 error:&parseError];
if (parseError) {
//解析出错
}
NSString * str = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
// 时间戳
NSMutableString * str3 = [[NSMutableString alloc]initWithString:str];
[str3 replaceOccurrencesOfString:@"\\" withString:@"" options:1 range:NSMakeRange(0, str3.length)];
[str3 appendString:@"dd05f1c54d63749eda95f9fa6d49v442a"];
NSString * md5str = [self getMd5_32Bit_String:str3];
[self httpRequestWithURL:@"gateway/sys/thirdAppGetTokenByIdCard" parameters:parmDic hearders:@{@"X-TIMESTAMP":dateString,@"X-Sign":md5str} success:success failed:failed];
}
else
{
success(responseObject);
}
}
} failed:^(NSError * _Nonnull error) {
}];
}
- (NSString *)getMd5_32Bit_String:(NSString *)srcString {
// 参数 srcString 传进来的字符串
// 参数 isUppercase 是否需要大小写
const char *cStr = [srcString UTF8String];
unsigned char digest[CC_MD5_DIGEST_LENGTH];
CC_MD5( cStr, (CC_LONG)srcString.length, 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;
}
@end