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种类型
1.application/x-www-form-urlencoded
2.multipart/form-data(最初的 http 协议中,没有上传文件方面的功能。rfc1867为http协议添加了这个功能)也就是Multipart协议
绝大部分 http server ,包括 tomcat ,已经支持此协议,可接受发送来的文件。各种网页程序,如 php, asp, jsp 中,对于上传文件已经做了很好的封装
另附上平时接受和发送请求实例解说
客户端发送:
// 协议头 请求方式 请求地址 协议版本 \r\n
GET http://taxcolor.dlc-sz.com/getWelfareList?pageNo=1&pageSize=2 HTTP/1.1
// 请求头 headers
Host: taxcolor.dlc-sz.com
// 是否支持长连接
Connection: Keep-Alive
// 编解码方式
Accept-Encoding: gzip
// 网页的Cookie,可以用token取代
Cookie: JSESSIONID=6E7237AB3B1DBA3BC8FD652264D64BA3
// 用户表示
User-Agent: okhttp/3.9.0
服务端回复:
// 协议头 协议版本 响应码 请求结果 \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":"操作成功!",。。。
网友评论