美文网首页
iOS中使用AFN传递字符串参数

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

作者: 记忆不为 | 来源:发表于2017-03-17 09:20 被阅读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格式的时候传递字符串奔溃的方法

    相关文章

      网友评论

          本文标题:iOS中使用AFN传递字符串参数

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