公司业务需要,部分接口使用加密传参方式,使用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表示整个字典加密后的字符串
- 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正常不做加密处理,具体按实际请求处理.