step 2 NSURLConnection

NSURLConnection

步骤

  • NSURL:确定要访问的资源
  • NSURLRequest:根据 URL 建立请求,向服务器索要数据
  • NSURLConnection:建立网络连接,将请求(异步)发送给服务器

示例代码

// 1. `NSURL`:确定要访问的资源

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

// 2. `NSURLRequest`:根据 `URL` 建立请求,向服务器索要数据

NSURLRequest *request = [NSURLRequest requestWithURL:url];

// 3. `NSURLConnection`:建立网络连接,将请求(异步)发送给服务器

[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {

NSLog(@"%@", data);

}];

NSURLConnection代码小结

sendAsynchronousRequest发送异步请求

1  此方法就是异步执行的,程序员无序考虑开启线程,或者创建队列

2  会将之前建立好的请求异步发送给服务器

3  等到接收到服务器响应后,由 queue 负责调度 completionHandler 的执行

队列

  • 调度 completionHandler 执行的队列

[[NSOperationQueue alloc] init],后台线程异步执行

[NSOperationQueue mainQueue],主线程异步执行

  • 队列的选择

如果要对数据进行耗时处理,例如:解压缩等,选择新建队列调度

如果只是做简单处理,立即更新 UI,选择主队列

completionHandler

  • 网络访问已经结束,接收到服务器响应数据后的回调方法
  • response,服务器的响应,通常在开发下载功能时才会使用

响应属性


说明


URL


服务器反馈的 URL,有的时候,服务器会重定向新的 URL


MIMEType

  • 服务器告诉客户端,返回的二进制数据的类型
  • ContentType
  • 根据 MIMEType 客户端就知道使用什么软件处理返回的二进制数据
  • 网络之所以这么丰富多彩,是因为有非常多的客户端软件

statusCode


状态码

  • 1XX消息
  • 2XX 成功
  • 3XX 更多选择
  • 4XX 客户端错误
  • 5XX 服务器错误

expectedContentLength


数据长度,下载文件总长度


suggestedFilename


建议的文件名

  • data 服务器返回的二进制数据,程序员最关心的内容
  • connectionError 连接错误,任何网络访问都有可能出现错误

// 标准的错误处理方法

if (connectionError || data == nil) {

NSLog(@"网络不给力!");

return;

}

请求简介

  • 基于 URL 建立请求
  • 设置请求属性:缓存策略,网络超时时长
  • 告诉服务器额外信息:客户端类型,身份验证...

// 告诉服务器,客户端的类型是 iPhone,而且支持 AppleWebKit

[request setValue:@"iPhone AppleWebKit" forHTTPHeaderField:@"User-Agent"];

时间: 2024-12-28 11:21:57

step 2 NSURLConnection的相关文章

NSURLConnection和NSRunLoop

主线程中创建一个NSURLConnection并异步运行 [self performSelectorOnMainThread:@selector(start) withObject:nil waitUntilDone:YES]; - (void)start { //step 1:请求地址 NSURL *url = [NSURL URLWithString:@"www.2cto.com"]; //step 2:实例化一个request NSURLRequest *request =[NS

hdu 4735 Little Wish~ lyrical step~(DLX)

题目链接:hdu 4735 Little Wish~ lyrical step~ 题意: 有n个节点的树,每个节点可能是男孩,可能是女孩,节点之间有距离,现在要让所有的女孩周围距离D之内有男孩,问最小需要交换多少次男孩和女孩的位置. 题解: 把每个节点对小于D距离的全部link起来,然后DLX爆艹,意义就是选n个节点去覆盖全部节点,如果这个节点是女生,那么就是要替换的点.然后不断更新答案. 1 #include<bits/stdc++.h> 2 #define F(i,a,b) for(int

多线程与网络之NSURLConnection发送请求

*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } a { color: #4183C4; } a.absent { color: #cc0000; } a.anchor { display: block; padding-left: 30px; margin-left: -30px; cursor: pointer; position: absolute

ASP.NET MVC轻教程 Step By Step 6——改进表单

上一节我们使用原始的HTML表单来完成留言功能,但是ASP.NET MVC提供了丰富的HTML辅助方法来帮助我们构建更简洁优雅的表单. Step 1. 修改Form标签 首先,我们可以使用Html.BeginForm来创建form标签.这样我们可以将原来的表单改成如下代码. @{Html.BeginForm("Save", "Home"); } <label for="nickname">昵称</label> <in

iOS学习笔记12-网络(一)NSURLConnection

一.网络请求 在网络开发中.须要了解一些经常使用的请求方法: GET请求:get是获取数据的意思,数据以明文在URL中传递,受限于URL长度,所以数据传输量比較小. POST请求:post是向server提交数据的意思.提交的数据以实际内容形式存放到消息头中进行传递,无法在浏览器url中查看到,大小没有限制. HEAD请求:请求头信息,并不返回请求数据体,而仅仅返回请求头信息,经常使用用于在文件下载中取得文件大小.类型等信息. 二.NSURLConnection NSURLConnection是

NSURLConnection和Runloop(面试)

(1)两种为NSURLConnection设置代理方式的区别 //第一种设置方式: //通过该方法设置代理,会自动的发送请求 // [[NSURLConnection alloc]initWithRequest:request delegate:self]; //第二种设置方式: //设置代理,startImmediately为NO的时候,该方法不会自动发送请求 NSURLConnection *connect = [[NSURLConnection alloc]initWithRequest:

文件下载 NSURLConnection——小文件下载

1.下载小文件,只适合几百k,1.2M的文件 //1.设置网址 //2.加载请求 //3.设置代理 //4.实现代理方法下载文件 NSURL *url = [NSURL URLWithString:@"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1492791082124&di=fc642407b4ec19430334653a9b873cff&imgtype=0&a

ios开发网络学习:一:NSURLConnection发送GET,POST请求

#import "ViewController.h" @interface ViewController ()<NSURLConnectionDataDelegate> /** 注释 */ @property (nonatomic, strong) NSMutableData *resultData; @end @implementation ViewController #pragma mark ---------------------- #pragma mark la

NSURLConnection / NSURLSession/ SDWebImage

1. NSURLConnection (iOS9开始被弃用)=========================================== 此类的对象加载一个URL请求对象,通过异步/同步的方式发送请求,并获得响应. 此类位于Foundation框架下,继承自NSObject ------------------------------ 异步/同步?    通讯方式 异步:在请求发送后,无需等待响应结果,而是可以继续后续其他操作,该请求的响应在回调方法中处理(通常用到的代理方法或bloc