美文网首页
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 方式网络请求

    最近新项目中,涉及几个后台模块,其中聊天模块是重庆团队在做,网络请求方式要求以josn 方式请求,网上找个N 多方...

  • ios开发

    允许ios访问网络内容 发送异步请求网页内容显示在webview中 异步请求json,并且转成字典

  • 字典转模型

    2016.08.31更新 ios开发中网络请求,通常返回json数据,如果想使用数据就必须把json格式的数据转成...

  • 接受客户端传递的JSON数据

    POSTMan可以模拟表单,提供请求格式(JSON,非JSON),请求方式。 一 . 非JSON方式: 方式二 :...

  • swift从入门到放弃-网络请求(4)

    网络请求源代码 基于Alamofire的数据请求,json返回格式 以表单的格式上传图片

  • iOS网络请求

    iOS网络请求 本文讲解了用iOS原生套类URLSession实现网络请求的方式方法。本文阅读大概需要10分钟左右...

  • AFNetworking4.0框架源码解读

    AFNetworking 一、简介 AFNetworking 是对iOS中网络请求方式 NSURLSession ...

  • 网络相关以及TCP/IP协议

    一、iOS9 网络编程的重大改变: 1、网络请求方式的改变 1)NSURLConnection: iOS9之前使用...

  • IOS-第三方开源库

    1.AFNetworking 目前比较推荐的iOS网络请求组件,默认网络请求是异步,通过block回调的方式对返回...

  • 关于目前自己iOS项目使用的第三方开源库

    1.AFNetworking 目前比较推荐的iOS网络请求组件,默认网络请求是异步,通过block回调的方式对返回...

网友评论

      本文标题:iOS 以json 方式网络请求

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