iOS中使用AFN传递字符串参数

最近公司要做AES加密,然后后台要我们将参数加密后传递过去.后台接收的是json格式数据,并且要加一些header信息.

//实例化AFHTTPSessionManager
manager = [AFHTTPSessionManager manager];
//说明请求格式为json格式
manager.requestSerializer = [AFJSONRequestSerializer serializer]; 
//说明接收格式为json格式
manager.responseSerializer = [AFJSONResponseSerializer serializer];
//与后台约定好可接收的Content-Type
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json",nil];
//增加头部
[manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];

将这些封装到网络工具类里
但是在使用时,由于加密后的参数是一段字符串,而我们说明了requestSerializer是json格式的,所以如果我们传递字符串过去会导致奔溃

//打断点后奔溃的原因
[mutableRequest setHTTPBody:[NSJSONSerialization dataWithJSONObject:parameters options:self.writingOptions error:error]];

主要是因为当我们说明了请求为json时,AFN内部会帮我们处理转为json格式的data,所以我们就要实现一个方法

[manager.requestSerializer setQueryStringSerializationWithBlock:^NSString * _Nonnull(NSURLRequest * _Nonnull request, id  _Nonnull parameters, NSError * _Nullable __autoreleasing * _Nullable error) {
        //在这里面对parameters进行处理
        return 处理后的参数;
    }];

这就是在请求为json格式的时候传递字符串奔溃的方法

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,067评论 19 139
  • 218.241.181.202 wxhl60 123456 192.168.10.253 wxhl66 wxhl6...
    CYC666阅读 1,459评论 0 6
  • 前言 这篇文章是iOS 基于MVVM + RAC + ViewModel-Based Navigation的微信开...
    CoderMikeHe阅读 5,553评论 29 55
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,262评论 4 61
  • 三个字和两个字是竹马竹马。 二人本来家离的并不远,每天一起上放学也是家常便饭。 可是有一天三个字的母亲改嫁,要带着...
    阿核阅读 202评论 0 0