AFNetworking传参使用字符串(加密)方式问题处理

59 阅读1分钟

公司业务需要,部分接口使用加密传参方式,使用AFNetworking,默认是使用Json字典,这样就会导致一些问题

  • 1.普通接口,设置请求头如下: AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; manager.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone]; manager.responseSerializer = [AFHTTPResponseSerializer serializer]; manager.requestSerializer = [AFJSONRequestSerializer serializer]; [manager.requestSerializer  setValue:@"application/json; charset=utf-8" forHTTPHeaderField:@"Content-Type"];

操作方式大概如下:其中endStr表示整个字典加密后的字符串 image.png

  • 2.需要同时上传文件,设置请求头如下: AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; manager.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone]; manager.responseSerializer = [AFHTTPResponseSerializer serializer]; manager.requestSerializer = [AFHTTPRequestSerializer serializer]; //afn默认是字典传参,使用键值对,加密接口这里改用字符串传参,需要调用这方法,否则抓包会发现参数一直会被默认添加 = 符号,调用失败 [manager.requestSerializer setQueryStringSerializationWithBlock:^NSString * _Nullable(NSURLRequest * _Nonnull request, id  _Nonnull parameters, NSError *__autoreleasing  _Nullable * _Nullable error) { return parameters; }];

另外,调用接口使用,将所有字典加密成字符串,请求参数部分可能依旧是以字典字典形式如下:其中endStr表示整个字典加密后的字符串,params是后台要求接受的参数key,文件提交appendPartWithFileData正常不做加密处理,具体按实际请求处理. image.png

参考文献: www.jianshu.com/p/90bbcfc4e…