iOS网络基础 iOS网络基础

952 阅读1分钟

#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

屏幕快照 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流程

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

NSURLSession

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

NSURLSession

  1. 创建一个请求
  2. 客户端发起请求
  3. 接收服务器端的响应
  4. 从服务器的响应中获取数据

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

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

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

NSURLSession的实现

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

NSURLSession工作流程

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

[TOC]