美文网首页
iOS 以json 方式网络请求

iOS 以json 方式网络请求

作者: 超人_22 | 来源:发表于2020-12-29 14:16 被阅读0次

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

          本文链接:https://www.haomeiwen.com/subject/ycbfoktx.html