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

2017-03-17  本文已影响0人  记忆不为

最近公司要做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格式的时候传递字符串奔溃的方法

上一篇下一篇

猜你喜欢

热点阅读