iOS网络基础 - iOS网络基础

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 *allHTTPHeaderFields;


上面提到的这些属性都是只读的。因此我们应使用NSMutableURLRequest

@interface NSMutableURLRequest : NSURLRequest

@property (copy) NSString *HTTPMethod;
@property (nullable, copy) NSData *HTTPBody;
@property (nullable, copy) NSDictionary *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

iOS网络基础 - iOS网络基础_第1张图片
屏幕快照 2017-07-21 上午12.30.59.png

数据解析 - 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流程

iOS网络基础 - iOS网络基础_第2张图片
屏幕快照 2017-07-21 上午1.26.40.png

NSURLSession

  • 替代NSURLConnection
  • iOS 7+
  • 2013年wwdc上推出

NSURLSession

  1. 创建一个请求
  2. 客户端发起请求
  3. 接收服务器端的响应
  4. 从服务器的响应中获取数据
iOS网络基础 - iOS网络基础_第3张图片
屏幕快照 2017-07-21 上午1.32.44.png
iOS网络基础 - iOS网络基础_第4张图片
屏幕快照 2017-07-21 上午1.36.43.png
屏幕快照 2017-07-21 上午1.38.10.png

NSURLSession的实现

屏幕快照 2017-07-21 上午1.45.02.png

NSURLSession工作流程

iOS网络基础 - iOS网络基础_第5张图片
屏幕快照 2017-07-21 上午1.55.19.png

[TOC]

你可能感兴趣的:(iOS网络基础 - iOS网络基础)