AFNetworking是一个轻量级的iOS网络通信类库。它建立在NSURLConnection和NSOperation等类库的基础上,让很多网络通信功能的实现变得十分简单。它支持HTTP请求和基于REST的网络服务(包括GET、POST、 PUT、DELETE等)。支持ARC
1.首先 所有的网络请求,均有manager发起
AFHTTPRequestOperationManager *manager=[AFHTTPRequestOperationManager manager];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
manager.responseSerializer = [AFJSONResponseSerializer serializer];
需要注意的是,默认提交请求的数据是二进制的,返回格式是JSON
- 如果提交数据是JSON的,需要将请求格式设置为AFJSONRequestSerializer
- 如果返回格式不是JSON的,
- 请求格式
- AFHTTPRequestSerializer | 二进制格式
- AFJSONRequestSerializer | JSON
- AFPropertyListRequestSerializer | PList(是一种特殊的XML,解析起来相对容易)
AF的 AFHTTPRequestSerializer 和 AFJSONRequestSerializer是传递有区分
AFHTTPRequestSerializer的传递 在底层又对 参数和参数值进行了一次Url编码
[mutableRequest setHTTPBody:[query dataUsingEncoding:self.stringEncoding]];
AFJSONRequestSerializer的传递 则是在底层将 参数(一般情况下我们传递的是字典类型 也就是java中的map形式)转化为了NSData类型进行传递
[mutableRequest setHTTPBody:[NSJSONSerialization dataWithJSONObject:parameters options:self.writingOptions error:error]];
一般的网络请求分为2种也就是mimeType的2种类型
另附上平时接受和发送请求实例解说
服务端回复:
// 协议头 协议版本 响应码 请求结果 \r\n
HTTP/1.1 200 OK
// 服务端用的框架
Server: nginx/1.14.0
// 回复时间
Date: Mon, 13 Aug 2018 05:55:46 GMT
// body文本类型
Content-Type: application/json;charset=UTF-8
// 告诉客户端支持keep-alive
Connection: keep-alive
X-Application-Context: application:8930
// body长度
Content-Length: 506
// 想隔两个\r\n放body
{"code":1,"msg":"操作成功!",。。。