美文网首页开发知识点iOS开发程序员
iOS AFN网络请求参数类型的变换(参数可用字符串)

iOS AFN网络请求参数类型的变换(参数可用字符串)

作者: RichardZhao | 来源:发表于2016-11-04 11:38 被阅读0次

在正常使用AFN网络请求的时候,请求参数params基本都是一个字典类型,AFN会把字典处理成一个json格式的二进制上传到服务器。服务器接受到的是一个json类型的数据。

如果服务器想要接受的数据是就是一个字符串我们该怎么做呢?
解决办法如下:

/**
 网络请求工具类实例化方法
 工具类继承与AFHTTPSessionManager
 */

+ (instancetype)sharedTools
{
    static HttpHelper *tools;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        if (!tools) {
            // 初始化
            tools = [HttpHelper new];
            // 设置请求参数数据类型 (默认二进制)
            tools.requestSerializer = [AFHTTPRequestSerializer serializer];
            // 设置响应结果的数据类型
            tools.responseSerializer = [AFHTTPResponseSerializer serializer];
            // 设置添加响应结果可接受的类型
            tools.responseSerializer.acceptableContentTypes = [tools.responseSerializer.acceptableContentTypes setByAddingObject:@"text/html"];
            
            // 处理请求体参数
            [tools.requestSerializer setQueryStringSerializationWithBlock:^NSString * _Nonnull(NSURLRequest * _Nonnull request, id  _Nonnull parameters, NSError * _Nullable __autoreleasing * _Nullable error) {
                
                return 此处返回处理后的参数;
                
            }];
        };
        
    });
    return tools;
}

解决此问题主要是通过此方法实现:

  // 处理请求体参数 (每次网络请求都会走此方法,默认对parameters是不进行处理的,需要重写)
            [tools.requestSerializer setQueryStringSerializationWithBlock:^NSString * _Nonnull(NSURLRequest * _Nonnull request, id  _Nonnull parameters, NSError * _Nullable __autoreleasing * _Nullable error) {
                
                /**
                 1.在此方法中我们可以获取到请求参数parameters
                 2.然后我们可以对参数进行加密,压缩等处理
                 3.处理后的结果就是一个字符串了
                 4.AFN会将返回的参数,转换成二进制上传到服务器
                 5.服务器接受到的就是下面返回的参数,然后服务器在对获取到的字符串进行解压,解密,转换为Json
                 */
                
                return 此处返回处理后的参数;
                
            }];

相关文章

  • iOS AFN网络请求参数类型的变换(参数可用字符串)

    在正常使用AFN网络请求的时候,请求参数params基本都是一个字典类型,AFN会把字典处理成一个json格式的二...

  • 问题

    AFN发送网络请求,后台要数组参数。google后发现原来AFN 提交array参数的时候是将参数名转为了...&...

  • 打印AFNetworking请求完整地址和参数

    一般iOS 网络请求都是使用AFN做网络工具请求的,但是有些参数和地址拼接完后打印看不见 可以直接修改pods A...

  • 记录开发中遇到的问题

    1.网络请求 iOS开发中基本都是使用的AFN网络库(OC),参数都是一个字典类型,这次服务端要一个字典下包含一个...

  • AFN坑及常用设置

    1.AFN默认参数拼接在url后的请求有 2.如果不想让AFN默认的请求参数拼接在url后面可以设置 ...

  • iOS GET请求常见错误之中文参数

    GET 请求参数中带中文用AFN会导致崩溃,需要把URL参数中的中文进行UTF-8转码iOS 7 之前用 NSSt...

  • http get和post请求参数详解

    一 Get请求参数 问题缘起:http请求参数类型有什么?比如传递a=null,那这个null是什么?跟空字符串和...

  • Retrofit 基础篇

    一、Retrofit 网络请求接口的注解类型:网络请求方法、标记类、网络请求参数 (1)网络请求方法 (2)标记类...

  • 接收请求参数和自定类型转换器

    一、接收请求参数 接收请求参数,按照参数的类型可以分为两种:1、采用基本类型接收请求参数(包含get/post)接...

  • 异步请求那点事儿

    fetch get 请求 默认请求方式,不能传参 post 请求 参数为字符串类型 axios get请求 pos...

网友评论

    本文标题:iOS AFN网络请求参数类型的变换(参数可用字符串)

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