最近新項(xiàng)目中葱跋,涉及幾個(gè)后臺(tái)模塊,其中聊天模塊是重慶團(tuán)隊(duì)在做臀蛛,網(wǎng)絡(luò)請求方式要求以josn 方式請求,網(wǎng)上找個(gè)N 多方法都行不通殉摔,下面是我的代碼,
+(void)requestForChatWithURLStr:(NSString *)api params:(NSDictionary *)params finishBlock:(RequestFinishBlock)finishBlock
{
NSString * timestamp =[[XXTools getTimestamp] stringByAppendingString:@"123"];
NSError *parseError = nil;
NSData *NSData1 = [NSJSONSerialization dataWithJSONObject:params options:NSJSONWritingPrettyPrinted error:&parseError];
NSString *para = [[NSString alloc] initWithData:NSData1 encoding:NSUTF8StringEncoding];
para =[para stringByReplacingOccurrencesOfString:@"\\" withString:@""];
para =[para stringByReplacingOccurrencesOfString:@" " withString:@""];
para=[XXTools stringByTrimmingCharactersInSet:para];
LOG(@"字典轉(zhuǎn)json字符串:%@",para);
NSString *encryptData=[para aci_encryptWithAES];
LOG(@"加密后的data:%@",encryptData);
long long time= [timestamp doubleValue];
long long time1 = time^1608187456577L;//異或處理
NSString *tmp=[encryptData stringByAppendingString:[NSString stringWithFormat:@"%lld",time1]];
LOG(@"signature data 拼接 時(shí)間:%@",tmp);
LOG(@"data + time md5 加密后:%@",[XXTools encryptionMD5:tmp]);
NSDictionary *dict=@{
@"data":encryptData,
@"time":timestamp,
@"signature":[XXTools encryptionMD5:tmp],
@"operator":[HZXUserInfo shareManager].serial //用戶唯一 id
};
@try {
NSString *urlStr = [NSString stringWithFormat:@"%s", webSoket_exchangeRSA_URL];
AFHTTPSessionManager *manager=[AFHTTPSessionManager manager];
manager.responseSerializer=[AFHTTPResponseSerializer serializer];
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json",@"text/html",@"text/plain",@"image/jpeg",@"image/png",@"application/octet-stream",@"text/json",@"multipart/form-data",nil];
[manager setRequestSerializer:[AFJSONRequestSerializer serializer]]; //設(shè)置成json請求方式
[manager POST:urlStr parameters:dict progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
NSDictionary *result = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil];
LOG(@"back==:%@",result);
NSString *deStr=[RSAss decryptString:[result valueForKey:@"data"] privateKey:WEB_SOCKET_PRIVATE_KEY];
NSDictionary *DeDict=[XXTools JsonStringToDictionary:deStr];
LOG(@"data解密后數(shù)據(jù)==:%@",DeDict);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
finishBlock(nil, error);
}];
}
@catch (NSException *exception) {
// [MBProgressHUD showError:@"網(wǎng)路錯(cuò)誤"];
}
}
//上面代碼加密方式這塊大家可以不用管记焊,直接替換成需要傳的參數(shù)