网络数据传输知识点总结

1、网络传输的知识点总结

(1)网络请求的方法有POST、GET(这两种是重要的)还有其他。

HTTP请求包的结构包括两个部分:请求头、请求体

POST请求:是向服务器提交数据的一种请求方法。有请求体和请求头

GET请求:是向服务器索取数据的一种请求方式。只有请求头

GET、POST请求,客户端向服务器端提交的数据,可以放入请求体或URL后面

(2)发送网络的基本流程

a)创建URL

NSURL *url = [NSURL URLWithString:@"http:www.baidu.com"];

b)创建Request(请求对象)

/**
     <#(nonnull NSURL *)#> :url
     <#(NSURLRequestCachePolicy)#>:设置缓存策略
     <#(NSTimeInterval)#>:超时处理
     */1)NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:120];//这个只能设置很少的选项,一般使用其子类2//大多数情况下使用NSURLRequest的子类
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60];
    //设置请求方式
    request.HTTPMethod = @"POST";

    //设置请求体
    request.HTTPBody = _data;

    //设置请求头
    [request setValue:@"hello World" forKey:@"status"];

c)创建会话(session),一个会话可以发起多个任务(task)

//(1)使用NSURLSession 创建
NSURLSession *session = [NSURLSession sharedSession];
//(2)使用NSURLSessionConfiguration创建
NSURLSessionConfiguration 用于配置创建Session的类型 
/*·三个类方法:
·+defaultSessionConfiguration 用于创建默认类型的Session对象
·+ephemeralSessionConfiguration 用于创建临时类型的Session对象
·+backgroundSessionConfiguration:(NSString *)identifier 用于创建后台 Session对象
*/
//1.创建Session配置对象
NSURLSessionConfiguration *sessionConfig = [NSURLSessionConfiguration defaultSessionConfiguration];
//2.创建Session对象
NSURLSession *session = [NSURLSession sessionWithConfiguration:sessionConfig];

/**NSURLSessionConfiguration设置了很多选项
requestCachePolicy 设置缓存策略
networkServiceType   设置网络服务的类型:网络流量、网络电话、语音、视频
timeoutIntervalForRequest 设置超时时间
HTTPAdditionalHeaders 设置请求头
discretionary 用于后台请求、会把wifi和电量的可用性考虑在内
allowsCellularAccess 是否使用蜂窝数据
*/

d)创建任务(task)

(1)NSURLSessionDataTask : 数据任务
NSURLSessionUploadTask :上传任务
NSURLSessionDownloadTask :下载任务

NSURLSessionDataTask *task = [session dataTaskWithRequest:request];

e)启动(恢复)任务

[task resume];

(2)监听数据传输任务

NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];
  //创建session,并且设置代理  
    NSURLSession *session = [NSURLSession sessionWithConfiguration:config delegate:self delegateQueue:[NSOperationQueue mainQueue]];
//代理方法主要有:
  //可以获得下载任务和存储路径
- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask
didFinishDownloadingToURL:(NSURL *)location;

//可以获得已经下载的大小和文件的整个大小从而获得下载的进度
/*
 bytesWritten:本次下载传输的字节
   totalBytesWritten:已经下载的字节
 totalBytesExpectedToWrite:文件的总大小
 */
- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask
      didWriteData:(int64_t)bytesWritten
 totalBytesWritten:(int64_t)totalBytesWritten
totalBytesExpectedToWrite:
  (int64_t)totalBytesExpectedToWrite;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值