iOS网络基础 - iOS网络基础
iOS网络基础
创建请求-NSURLRequest
客户端发起请求-NSURLConnection
接收服务器端的响应-NSURLConnectionDataDelegate
从服务器端的响应中获取数据
NSURLRequest
@interface NSURLRequest : NSObject
@property (copy) NSString *HTTPMethod;
@property (nullable, readonly, copy) NSData *HTTPBody;
@property (nullable, readonly, copy) NSDictionary<NSString *, NSString *> *allHTTPHeaderFields;
上面提到的这些属性都是只读的。因此我们应使用NSMutableURLRequest
@interface NSMutableURLRequest : NSURLRequest
@property (copy) NSString *HTTPMethod;
@property (nullable, copy) NSData *HTTPBody;
@property (nullable, copy) NSDictionary<NSString *, NSString *> *allHTTPHeaderFields;
默认情况下创建的http请求方法就是get。可以通过属性HTTPMethod指定方法。通过属性allHTTPHeaderFields修改header。
NSURLConnection
- (nullable instancetype)initWithRequest:(NSURLRequest *)request delegate:(nullable id)delegate startImmediately:(BOOL)startImmediately
NSURLConnectionDataDelegate
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response;
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data;
- (void)connectionDidFinishLoading:(NSURLConnection *)connection;
接收响应-->接收数据-->响应接收完毕
NSURLResponse
数据解析 - NSJSONSerialization :NSObject
将NSData转成JSON
将JSON转成NSData
App Transport Security
- 不允许明文的HTTP请求
- 默认使用HTTPS,鼓励采用HTTPS带来更好的安全性
- 通过info.plist进行配置
HTTPS
相当于将明文的HTTP协议加密。
http:// 默认端口:80
https:// 默认端口:443
- 超文本传输安全协议
- http over TLS
- TLS:传输层安全协议(Transport Layer Security)
为应用带来的好处:
- 加密(Encryption)
- 完整性 (Integrity)
- 认证 (Authentication)
NSURLConnection流程
NSURLSession
- 替代NSURLConnection
- iOS 7+
- 2013年wwdc上推出
NSURLSession
- 创建一个请求
- 客户端发起请求
- 接收服务器端的响应
- 从服务器的响应中获取数据
NSURLSession的实现
NSURLSession工作流程
[TOC]