网络数据传输知识点总结

    xiaoxiao2026-04-10  4

    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;
    转载请注明原文地址: https://ju.6miu.com/read-1308687.html
    最新回复(0)