NSURLConnection基本用法(苹果原生)
一、NSURLConnection的常用类
(1)NSURL:请求地址
(2)NSURLRequest/NSMutableURLRequest:封装一个请求,保存发给服务器的全部数据,包括一个NSURL对象,请求方法、请求头、请求体....
(3)NSURLConnection:负责发送请求,建立客户端和服务器的连接。发送NSURLRequest的数据给服务器,并收集来自服务器的响应数据
二、NSURLConnection的使用
(1)创建一个NSURL对象,设置请求路径(设置请求路径)
(2)传入NSURL创建一个NSURLRequest对象,设置请求头和请求体(创建请求对象)
(3)使用NSURLConnection发送NSURLRequest(发送请求)


设置请求 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; 创建请求,默认是get请求
设置请求超时等待时间(超过这个时间就算超时,请求失败) - (void)setTimeoutInterval:(NSTimeInterval)seconds;
设置请求方法(比如GET和POST) - (void)setHTTPMethod:(NSString *)method;
设置请求体 - (void)setHTTPBody:(NSData *)data;
设置请求头 - (void)setValue:(NSString *)value forHTTPHeaderField:(NSString *)field;
2、发送请求方式
(1)同步请求(会一直等待服务器返回数据,这行代码会卡住,如果服务器没有返回数据,那么在主线程UI会卡住不能继续执行操作)
NSData *data=[NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]
(2)异步请求(block回掉方式)
NSOperationQueue *queue = [NSOperationQueue mainQueue];
[NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
if (data) { 必须价格判断,如果data为空,那么程序会崩溃(data不能为空)
// 当请求结束的时候调用 block(拿到了服务器的数据, 请求失败)
} }];
(3)异步请求(NSURLConnectionDataDelegate方式)
NSURLConnection *conn=[NSURLConnection connectionWithRequest:request delegate:self];
[conn start]
代理方法:
请求失败:- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
请求服务器响应:- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
请求接收数据(调用多次):- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
请求数据接收完毕:- (void)connectionDidFinishLoading:(NSURLConnection *)connection
NSURLConnection基本用法(苹果原生)的更多相关文章
- 【原】iOS学习之苹果原生代码实现Autolayout和VFL语言
1.添加约束的规则 在创建约束之后,需要将其添加到作用的view上 在添加时要注意目标view需要遵循以下规则: 1)对于 两个同层级view之间 的约束关系,添加到它们的父view上 2)对于 两个 ...
- 苹果原生NSURLSession的上传和下载
关于NSURLSession的上传和下载 在iOS7.0后,苹果公司新推出了一个NSURLSession来代替NSURLConnection.NSURLConnection默认是在 主线程执行的.而N ...
- supersr--NSURLConnection iOS2.0苹果原生请求
get请求1: NSURL*url = [NSURLURLWithString:@"http://127.0.0.1/demo.json"]; NSURLRequ ...
- ios7 苹果原生二维码扫描(和微信类似)
在ios7苹果推出了二维码扫描,以前想要做二维码扫描,只能通过第三方ZBar与ZXing. ZBar在扫描的灵敏度上,和内存的使用上相对于ZXing上都是较优的,但是对于 “圆角二维码” 的扫描确很困 ...
- Elasticsearch基本用法(1)--原生操作
2.2.创建索引 2.2.1.语法 创建索引的请求格式: 请求方式:PUT 请求路径:/索引库名 请求参数:json格式: { "settings": { "number ...
- ios 苹果原生系统定位 CLLocationManager
首先要干这些事 下面的方法亲测可用 ------------------------------------------------------------ DNLogFUNC //初始化位置管理对象 ...
- iOS开发——网络篇——HTTP/NSURLConnection(请求、响应)、http响应状态码大全
一.网络基础 1.基本概念> 为什么要学习网络编程在移动互联网时代,移动应用的特征有几乎所有应用都需要用到网络,比如QQ.微博.网易新闻.优酷.百度地图只有通过网络跟外界进行数据交互.数据更新, ...
- HTTP和GET/POST请求(NSURLConnection)
网络编程 网络编程是一种实时更新应用数据的常用手段 网络编程是开发优秀网络应用的前提和基础 网络基本概念 客户端(就是手机或者ipad等手持设备上面的APP) 服务器(远程服务器-本地服务器) 请求( ...
- iOS 原生二维码扫描(可限制扫描区域)
篇文章的主要原因不是展示如何使用 AVFoundation 来进行二维码扫描,更主要的是限制扫描二维码的范围.(因为默认的是全屏扫描) 项目遇到扫描二维码的功能需求,这里我放弃了使用三方库,而采用了 ...
随机推荐
- 使用java代码打开特定网页
第一种方法的代码如下所示: import java.io.File; public class Test04 { public static void main(String[] args) { // ...
- Python基本语法(一)
注释及注意 #代表注释:冒号:结尾时,接下来的代码会自动缩进,一般为4个空格.Python程序是大小写敏感的. 数据类型和变量 在Python中能够直接处理的数据类型有以下几种: 整数 浮点数 字符串 ...
- php中实现将姓名拆分为姓氏和名字
之前有分享了用javascript在客户端进行姓名拆分的方法,后应项目需要,又用PHP实现了,贴出来 跟大家分享交流: /** * 把全名拆分为姓氏和名字 * @param string $fulln ...
- pcre函数详解
PCRE是一个NFA正则引擎,不然不能提供完全与Perl一致的正则语法功能.但它同时也实现了DFA,只是满足数学意义上的正则. PCRE提供了19个接口函数,为了简单介绍,使用PCRE内带的测试程序( ...
- java 网页 保存上传文件
网页请求提交到另外一个jsp 进行处理 index.jsp <%@ page language="java" import="java.util.*" p ...
- pip镜像源
pip是用国内镜像源 https://pypi.python.org/http://pypi.douban.com/simple/ http://mirrors.aliyun.com/pypi/sim ...
- jsp中引入JavaScript的方法
1:在页面中直接嵌入JavaScript <script language="javascript">..........</script> 2:链接外部J ...
- git-远程协作
远程协作相关命令 1.1. git clone 克隆远程仓库 git clone支持的协议有: 例如: git clone https://github.com/332473775/gitTestPr ...
- Eclipse jar包源码下载
在使用intelliJ的时候,可以在IDE中直接下载jar包: Eclipse也可以!就是插件Java Source Attacher 这个插件是放在eclipse安装目录的dropins目录下.重启 ...
- ExtJs中获得当前选中行号(Grid中多选或者是单选)及Grid的反选(取消选中行)
多选,如何获得每行的行号: function getlineNum(){ var sm=titleGird.getSelectionModel(); // 获得grid的SelectionMod ...