iOS 以json 方式网络请求

最近新项目中,涉及几个后台模块,其中聊天模块是重庆团队在做,网络请求方式要求以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:@"网路错误"];
    }
}

//上面代码加密方式这块大家可以不用管,直接替换成需要传的参数

你可能感兴趣的:(iOS 以json 方式网络请求)