iOS开发中的AFNetworking使用之请求参数类型和接收数据类型

接收数据类型

现在客户端开发中接收后台返回的数据形式最常用的就是JSON数据,我们在使用AFNetworking这个框架在请求数据的时候可以设置接收数据类型。
如果不设置,且后台返回的二进制,默认接收到的数据是NSData类型,即二进制数据,我们要想使用它需要将其转成JSON类型的数据然后使用字典(NSDictionary)(一般都是字典)去接收。我们也可以设置接收的数据类型,将接收的数据类型设置成JSON类型,那么我们就可以直接用字典去接收返回的数据。
设置代码:

  manager.responseSerializer = [AFJSONResponseSerializer serializer]

manager是AFHTTPSessionManager的一个实例。

2019.4.3补充:
[AFHTTPResponseSerializer serializer]和[AFJSONResponseSerializer serializer]的区别:
如果使用前者的话,那么返回的JSON数据是NSData类型需要我们再手动将NSData数据转成OC中的字典或数组,转换代码:

  NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:responseObject options:kNilOptions error:&error];

如果使用后者的话,那么AFNetworking已经将NSData数据转成了OC中的字典或数组,我们可以直接使用字典或数组去接收。
我们还可以将NSData类型的数据直接转成JSON字符串,代码:

  NSString * str = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];    // 可转成JSON字符串

请求参数数据类型

同样是使用AFNetworking进行数据请求,我们在给后台发送数据的时候,可以对请求参数的数据类型进行设置。默认给后台传的NSData类型数据,即二进制数据。同样我们可以将上传的数据类型设置成后台需要的JSON类型。
设置代码:

  manager.requestSerializer = [AFJSONRequestSerializer serializer]

我们如何去设置请求参数的数据类型需要看后台需要什么类型的数据,如果两端数据类型不统一,请求是无法成功的。

补充一张图:


请求的数据格式.png

2019.3.5补充
我们在postman上可以看到POST请求的body体内的数据类型有四种:form-data、x-www-form-urlencoded、raw、binary


0.form-data.png

form-data表示既可以上传键值对也可以上传文件。


0.x-www.form-urlencoded.png

x-www-form-urlencoded表示会将表单内的数据转换成键值对。
raw


0.-raw.png

raw表示可以上传任意类型的文本,包括Text、json、xml、html。


0.binary.png

binary表示只可以上传二进制数据,通常用来上传文件。

****本篇文章到这里就结束了,愿大家加班不多工资多,男同胞都有女朋友,女同胞都有男朋友。😊***

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

推荐阅读更多精彩内容