ASIHTTPRequest简单学习
ASIHTTPRequest框架是优秀的第三方Objective-C的HTTP框架,支持Mac OS X和iOS下的HTTP开发。
一、ASIHTTPRequest框架的安装和配置
(1)首先要在项目工程中导入相关的文件,包括:ASIHttpRequest文件夹和Reachability文件夹。
(2)要导入相关的支持类库和框架。包括:
CFNetwork.framework
SystemConfiguration.framework
MobileCoreServices.framework
libz.dylib
(3)由于ASIHTTPRequest是不支持ARC的,所以在添加了ARC特性的项目中就会出现ARC报错,解决的方法也很简单,对ASIHTTPRequest的相关文件添加ARC特性,做法就是在target中选择Build Phases,再选择compile sources中ASIHTTPRequest的文件,双击弹出对话框,添加参数“-fno-objc-arc”。问题解决。
二、同步请求
首先需要导入ASIHTTPRequest头文件。
- NSString *urlString = @"*****";
- ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:urlString]];
- [request startSynchronous];
- NSError *error = [request error];
- if (!error) {
- NSData *data = [request responseData];
- NSString *string = [request responseString];
- }
这是一段简单的同步请求的代码。其中的responseData返回的是二进制数据,而responseString返回的是文本数据。
三、异步请求
附注:我们运行程序,如果网速很慢,查询的时候会一直黑屏,直到请求结束画面才出现,这样用户体验很不好。因此同步请求一般只是在某个子线 程中使用,而不在主线程中使用。异步请求的用户体验要比同步请求好,因此一般情况下异步请求用的很多。等待过程中在状态栏上会出现网络等待指示器的经典旋 转小图标,而使用ASIHTTPRequest异步请求就实现这些效果,不用自己额外编写代码。
异步请求需要实现代理方法
- NSString *urlString = @"*****";
- ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:urlString]];
- [request setDelegate:self];
- [request startAsynchronous];
需要实现两个代理方法:
- - (void)requestFinished:(ASIHTTPRequest *)request {
- NSData *data = [request responseData];
- NSString *string = [request responseString];
- }
- - (void)requestFailed:(ASIHTTPRequest *)request {
- NSError *error = [request error];
- if (error) {
- NSLog(@"request failed");
- }
- }
这两个方法是默认的回调方法,从服务器获取数据成功就回调第一个方法,否则回调第二个方法。当然也可以自己定义回调方法。
- [request setDidFinishSelector:@selector(requestSuccess:)];
- [request setDidFailSelector:@selector(requestError:)];
然后再实现这两个自定义的回调方法。
- - (void)requestSuccess:(ASIHTTPRequest *)request {
- NSData *data = [request responseData];
- NSString *string = [request responseString];
- }
- - (void)requestError:(ASIHTTPRequest *)request {
- NSError *error = [request error];
- if (error) {
- NSLog(@"request failed");
- }
- }
在异步请求中往往为了代码更加简洁可以使用代码块(block),在代码块中指定回调方法。
- NSString *urlString = @"*****";
- __weak ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:urlString]];
- [request setCompletionBlock:^{
- // Use when fetching text data
- NSString *responseString = [request responseString];
- // Use when fetching binary data
- NSData *responseData = [request responseData];
- }];
- [request setFailedBlock:^{
- NSError *error = [request error];
- if (error) {
- NSLog(@"request failed");
- }
- }];
- [request startAs
ASIHTTPRequest简单学习的更多相关文章
- Log4j简单学习笔记
log4j结构图: 结构图展现出了log4j的主结构.logger:表示记录器,即数据来源:appender:输出源,即输出方式(如:控制台.文件...)layout:输出布局 Logger机滤器:常 ...
- shiro简单学习的简单总结
权限和我有很大渊源. 培训时候的最后一个项目是OA,权限那块却不知如何入手,最后以不是我写的那个模块应付面试. 最开始的是使用session装载用户登录信息,使用简单权限拦截器做到权限控制,利用资源文 ...
- CentOS 简单学习 firewalld的使用
1. centos7 开始 使用firewalld 代替了 iptables 命令工具为 firewall-cmd 帮助信息非常长,简单放到文末 2. 简单使用 首先开启 httpd 一般都自带安装了 ...
- Windows 下 Docker 的简单学习使用过程之一 dockertoolbox
1. Windows 下面运行 Docker 的两个主要工具1): Docker for Windows2): DockerToolbox区别:Docker For Windows 可以理解为是新一代 ...
- 在MVC中实现和网站不同服务器的批量文件下载以及NPOI下载数据到Excel的简单学习
嘿嘿,我来啦,最近忙啦几天,使用MVC把应该实现的一些功能实现了,说起来做项目,实属感觉蛮好的,即可以学习新的东西,又可以增加自己之前知道的知识的巩固,不得不说是双丰收啊,其实这周来就开始面对下载在挣 ...
- Linux——帮助命令简单学习笔记
Linux帮助命令简单学习笔记: 一: 命令名称:man 命令英文原意:manual 命令所在路径:/usr/bin/man 执行权限:所有用户 语法:man [命令或配置文件] 功能描述:获得帮助信 ...
- OI数学 简单学习笔记
基本上只是整理了一下框架,具体的学习给出了个人认为比较好的博客的链接. PART1 数论部分 最大公约数 对于正整数x,y,最大的能同时整除它们的数称为最大公约数 常用的:\(lcm(x,y)=xy\ ...
- mongodb,redis简单学习
2.mongodb安装配置简单学习 配置好数据库路径就可以mongo命令执行交互操作了:先将服务器开起来:在开个cmd执行交互操作 ...
- html css的简单学习(三)
html css的简单学习(三) 前端开发工具:Dreamweaver.Hbuilder.WebStorm.Sublime.PhpStorm...=========================== ...
随机推荐
- 第三章 “我要点爆”微信小程序云开发之点爆方式页面和爆炸之音页面制作
点爆方式选择页面制作 在app.json中配置页面路径增加selectbao点爆方式选择,编译创建页面文件,点爆方式选择页面通过单选按钮组选择跳转到相应的点爆页面. <view class=&q ...
- (转)linux du命令
转自 http://www.cnblogs.com/peida/archive/2012/12/10/2810755.html Linux du命令也是查看使用空间的,但是与df命令不同的是Linux ...
- git合并某次提交到某个分支
有的时候,在develop分支开发,是大家公用的开发分支,但是只想合并自己提交的到master,如何操作呢?那就要用cherry-pick了. 语法 git cherry-pick commitid ...
- Servlet | 访问不同格式文件(PDF、doc)
核心代码 //设置响应内容类型为PDF类型 response.setContentType("application/pdf"); request.getRequestDispat ...
- [POI2011]Plot
https://szkopul.edu.pl/problemset/problem/mzrTn1kzVBOAwVYn55LUeAai/site/?key=statement 既卡常又卡精度...真的A ...
- 栈 && 教授的测试
卡特兰数:https://blog.csdn.net/wu_tongtong/article/details/78161211 https://www.luogu.org/problemnew/sho ...
- Java中try catch finally语句中含有return语句的执行情况
finally块中的内容会先于try中的return语句执行,如果finall语句块中也有return语句的话,那么直接从finally中返回了,这也是不建议在finally中return的原因.下面 ...
- ZOJ Saddle Point 数学思维题
http://acm.zju.edu.cn/onlinejudge/showContestProblem.do?problemId=5564 根据它的定义是行最小,列最大. 可以证明鞍点是唯一的. ...
- Mysql5.7免编译版自动安装脚本
一:readme: .此脚本仅仅适合于5.7免面编译安装版本. .安装是需自己选择mysql软件安装包:例如mysql--linux-glibc2.-x86_64.-linux-glibc2.-x86 ...
- vue.js2.0实战填坑记录
访https://github.com/bailicangdu/vue2-elm的PC商城 在创建的 router 对象中,如果不配置 mode,就会使用默认的 hash 模式,该模式下会将路径格式化 ...