最近新项目中,涉及几个后台模块,其中聊天模块是重庆团队在做,网络请求方式要求以josn 方式请求,网上找个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(@"字典转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 拼接 时间:%@",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]]; //设置成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解密后数据==:%@",DeDict);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
finishBlock(nil, error);
}];
}
@catch (NSException *exception) {
// [MBProgressHUD showError:@"网路错误"];
}
}
//上面代码加密方式这块大家可以不用管,直接替换成需要传的参数