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]

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

补充一张图:


iOS开发中的AFNetworking使用之请求参数类型和接收数据类型_第1张图片
请求的数据格式.png

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


iOS开发中的AFNetworking使用之请求参数类型和接收数据类型_第2张图片
0.form-data.png

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


iOS开发中的AFNetworking使用之请求参数类型和接收数据类型_第3张图片
0.x-www.form-urlencoded.png

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


iOS开发中的AFNetworking使用之请求参数类型和接收数据类型_第4张图片
0.-raw.png

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


iOS开发中的AFNetworking使用之请求参数类型和接收数据类型_第5张图片
0.binary.png

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

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

你可能感兴趣的:(iOS开发中的AFNetworking使用之请求参数类型和接收数据类型)