1 一、NSURLConnection 2 1.发送请求 3 1> 发送一个同步请求 4 + (NSData *)sendSynchronousRequest:(NSURLRequest *)request returningResponse:(NSURLResponse **)response error:(NSError **)error; 5 6 2> 发送一个异步请求(block) 7 + (void)sendAsynchronousRequest:(NSURLRequest*) request 8 queue:(NSOperationQueue*) queue 9 completionHandler:(void (^)(NSURLResponse* response, NSData* data, NSError* connectionError)) handler;10 11 3> 发送一个异步请求(代理方法)12 [NSURLConnection connectionWithRequest:request delegate:self];13 [[NSURLConnection alloc] initWithRequest:request delegate:self];14 [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:YES];15 16 NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:NO];17 [conn start];18 19 2.文件下载(大文件下载)20 1> 实现方案 : 边下载边写入(写到沙盒的某个文件中)21 2> 具体实现步骤22 a. 在接收到服务器的响应时23 // 创建一个空文件 - NSFileManager24 [mgr createFileAtPath:self.destPath contents:nil attributes:nil];25 26 // 创建一个跟空文件相关联的句柄对象 - NSFileHandle27 [NSFileHandle fileHandleForWritingAtPath:self.destPath];28 29 b. 在接收到服务器的数据时30 // 利用句柄对象将服务器返回的数据写到文件的末尾31 // 移动到文件的尾部32 [self.writeHandle seekToEndOfFile];33 // 从当前移动的位置(文件尾部)开始写入数据34 [self.writeHandle writeData:data];35 36 c. 在接收完服务器返回的数据时37 // 关闭句柄38 [self.writeHandle closeFile];39 self.writeHandle = nil;40 41 3.断点下载42 1> 关键技术点43 * 设置请求头Range, 告诉服务器下载哪一段数据44 45 4.文件上传46 1> 明确47 * 只能用POST请求48 * 请求参数都在请求体(文件参数\非文件类型的普通参数)49 50 2> 实现步骤51 a. 拼接请求体(文件参数\非文件类型的普通参数)52 * 文件参数53 // 参数的开始标记(分割线)54 --nihao\r\n55 // 参数描述(参数名...)56 Content-Disposition: form-data; name="参数名"; filename="文件名"\r\n57 // 文件类型58 Content-Type: 文件的类型MIMEType\r\n59 // 文件的二进制数据(参数值)60 \r\n61 文件的二进制数据62 \r\n63 64 * 非文件参数(普通参数)65 // 参数的开始标记(分割线)66 --nihao\r\n67 // 参数描述(参数名...)68 Content-Disposition: form-data; name="参数名"\r\n69 // 参数值70 \r\n71 参数值72 \r\n73 74 * 所有参数结束的标记75 --nihao--\r\n76 77 b. 设置请求头78 * 请求体的长度79 Content-Length : 请求体的长度(字节长度)80 81 * 请求数据的类型82 Content-Type :83 // 普通POST请求: application/x-www-form-urlencoded84 // 上传文件的POST请求 : multipart/form-data; boundary=--nihao