UI 网络请求
2015-12-05 19:23
369 查看
HTTP协议
HTTP协议,Hyper Text Transfer Protocol(超⽂本传输协议)是 ⽤于从万维⺴服务器传送超⽂本到本地浏览器的传输协议,HTTP是 ⼀个应⽤层协议,由请求和响应构成,是⼀个标准的客户端服务器 模型。http 3次握手 用户连续向服务器3次发送一样的请求 第三次服务器不再询问,开始执行
url:统一资源定位符,也被成为网址,因特网上标准的资源网址
url的符语法: 协议://授权/路径?查询
协议: ftp:// (文件传输协议) http://(超文本传输协议) https://(安全超文本传输协议) file://(本地文件协议)
GET与POST的区别:
GET:通过网址字符串 最多255字节POST:使用NSData,容量超过1G
利用get请求 请求一个网址时 明文显示(携带的信息不安全)
post: 数据被转成NSData(二进制数据),类似于密码的密文输入,无法直接读取.
连接方式:
同步连接: 会造成程序的卡顿(只有当请求完成 才会恢复对界面的操作 用户体验很差)
异步连接:等待数据返回
异步连接有两种实现方式: 设置代理 接收数据
实现block
GET请求
不管同步还是异步前面4步的步骤是一样的
// 1.网址中有中文的需要转化一下格式 中文不能直接转 没有就不需要 NSString *newStr = [kSearchURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; // 2.把字符串的网址转化为网址对象 NSURL *url = [NSURL URLWithString:newStr]; // 3.创建一个请求 // timeoutInterval 请求超时的时间 秒为单位 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:(NSURLRequestUseProtocolCachePolicy) timeoutInterval:10]; // 4.设置一个请求的标志 标识符很重要 [request setHTTPMethod:@"GET"]; **同步时:** // 5.建立同步连接 并得到返回的数据 NSData * data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 后面两个对象可以为空 一个是服务器响应信息 一个是错误信息 // 6.解析数据 **异步时:** 代理方法: // 5.利用请求 创建一个异步连接 self.connection = [NSURLConnection connectionWithRequest:request delegate:self]; // 6.开始连接 [self.connection start] 然后实现代理方法 a.接收到服务器的响应信息时触发的方法 连接成功里面 创建data b.接收到数据触发的方法(走很多次)多次触发这个方法才能接收到完整的data 所以需要拼接一下data [self.data appendData:data]; c.已经完成数据加载 触发的方法 解析数据在这里面进行 **如果在tableView上展示的话 注意刷新界面** d.请求失败时触发 block异步连接方法 // [NSOperationQueue mainQueue] // 代表回到主线程 [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) { // 当数据请求完成的时候会指定 这个block NSLog(@"%@",data); // 判断是否在主线程 NSLog(@"%d",[NSThread isMainThread]); }];
POST与GET差不多,这不过POST的url与data是分开的
区别:POST请求 可以携带一个请求体
NSData *data = [kNewsListParam dataUsingEncoding:NSUTF8StringEncoding];
[request setHTTPBody:data];
其他是一样的.
获取服务器响应信息的长度 long long 类型的response.expectedContentLength
data.length 得到的data的长度
以获取到data的形式得到image
UIImage *image = [UIImage imageWithData:self.data];
相关文章推荐
- iOS 网络之NSURLConnection
- Stanford UFLDL教程 神经网络向量化
- Android6.0新特性----OKHttp请求
- 深度学习(十九)基于空间金字塔池化的卷积神经网络物体检测-ECCV 2014
- http_build_query()详细相关
- 介绍TCP/udp比较好的博客
- HTML5 块级元素与行内元素伦理片 http://www.dotdy.com/
- 151205http调试工具Charles Proxy用法详解
- android okhttp封装使用
- 17:网络编程
- 《TCP/IP详解 卷1:协议》 读书笔记 第十章 动态选路协议
- TCP/IP协议与OSI参考模型对应关系
- Stanford机器学习---第五讲. 神经网络的学习 Neural Networks learning
- Stanford机器学习---第四讲. 神经网络的表示 Neural Networks representation
- 深入分析JavaWeb Item9 -- HttpServletRequset详解
- linux网络连接配置
- JAVA通信编程(三)——TCP通讯
- JAVA通信编程(三)——TCP通讯
- UI基础-网络编程
- ios开发——response之Http报头Accept&Content-Type