ASIHTTPRequest  基于底层CFNetwork框架,运行效率很高

可惜作者 停止更新,有一些潜在的BUG无人去解决

老项目 ASI + SBJson

只需要用到外面的源文件

ASI还依赖于Reachability 用来检测网络状态

ASI的基本使用

非ARC

1.

#import "HMViewController.h"
#import "ASIHTTPRequest.h" @interface HMViewController () <ASIHTTPRequestDelegate>
@property (nonatomic, strong) ASIHTTPRequest *request;
@end @implementation HMViewController - (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
} - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[self asynGet];
} /**
* 异步的GET请求
*/
- (void)asynGet
{
// 1.URL
NSURL *url = [NSURL URLWithString:@"http://120.25.226.186:32812/video?type=JSON"]; // 2.创建一个请求对象
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
request.timeOutSeconds = 15; // 15秒后服务器还没有响应,就算超时
// 设置代理
request.delegate = self; // 3.开始请求
[request startAsynchronous]; self.request = request;
} - (void)dealloc
{
// 这句代码为了防止:控制器销毁了,request还回来调用控制器的代理方法,引发野指针
[self.request clearDelegatesAndCancel];
} #pragma mark - ASIHTTPRequestDelegate
/**
* 1.开始发送请求
*/
- (void)requestStarted:(ASIHTTPRequest *)request
{
NSLog(@"requestStarted");
}
/**
* 2.接收到服务器的响应头信息
*/
- (void)request:(ASIHTTPRequest *)request didReceiveResponseHeaders:(NSDictionary *)responseHeaders
{
NSLog(@"didReceiveResponseHeaders");
}
/**
* 3.接收到服务器的实体数据(具体数据)
* 只要实现了这个代理方法,responseData\responseString就没有值
*/
//- (void)request:(ASIHTTPRequest *)request didReceiveData:(NSData *)data
//{
// NSLog(@"didReceiveData-%@", data);
//}
/**
* 4.服务器的响应数据接收完毕
*/
- (void)requestFinished:(ASIHTTPRequest *)request
{
NSLog(@"requestFinished--%@", [request responseData]);
}
/**
* 5.请求失败
*/
- (void)requestFailed:(ASIHTTPRequest *)request
{
NSLog(@"requestFailed");
} /**
* 同步的GET请求
*/
- (void)synGet
{
// 1.URL
NSURL *url = [NSURL URLWithString:@"http://localhost:8080/MJServer/video"]; // 2.创建一个请求对象
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
request.timeOutSeconds = 15; // 15秒后服务器还没有响应,就算超时 // 3.开始请求(这行代码会卡主,等待服务器给数据)
[request startSynchronous]; // 4.请求完毕
NSError *error = [request error];
if (error) {
NSLog(@"请求失败---%@", error);
} else {
NSData *data = [request responseData];
// NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
// NSString *str = [request responseString]; NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];
NSLog(@"请求成功---%@", dict);
}
}

  

建议

除了做文件下载 要监听进度

只要实现了 代理方法中的  didReceiveData  requestFinished中request没有值

如果没有实现didReceiveData,requestFinshed中request有值

网络ASI的更多相关文章

  1. iOS开发网络篇—简单介绍ASI框架的使用

    iOS开发网络篇—简单介绍ASI框架的使用 说明:本文主要介绍网络编程中常用框架ASI的简单使用. 一.ASI简单介绍 ASI:全称是ASIHTTPRequest,外号“HTTP终结者”,功能十分强大 ...

  2. iOS开发网络篇—使用ASI框架进行文件下载

    iOS开发网络篇—使用ASI框架进行文件下载 说明:本文介绍iOS网络编程中经常用到的框架ASI,如何使用该框架进行文件的下载. 一.简单介绍 代码示例: #import "YYViewCo ...

  3. [iOS 多线程 & 网络 - 2.11] - ASI框架上传文件

    A.ASI的上传功能基本使用 1.实现步骤 (1)创建请求 使用ASIFormDataRequest (2)设置上传文件路径 (3)发送请求     2.上传相册相片 UIImagePickerCon ...

  4. [iOS 多线程 & 网络 - 2.10] - ASI框架下载文件

    A.ASI框架中的下载 1.实现步骤 在实际的开发中如果要使用asi框架来下载服务器上的文件,只需要执行下面简单的几个步骤即可. (1)创建请求对象:(2)设置下载文件保存的路径:(3)发送下载文件的 ...

  5. [iOS 多线程 & 网络 - 2.9] - ASI框架

    A.ASI基本知识 1.ASI简单介绍 ASI:全称是ASIHTTPRequest,外号“HTTP终结者”,功能十分强大. ASI的实现基于底层的CFNetwork框架,因此运行效率很高. ASI的g ...

  6. ASI简单实现网络编程

    使用iOS SDK中的HTTP网络请求API,相当的复杂,调用比較麻烦.ASIHTTPRequest 对CFNetwork API进行了封装.而且使用起来非常easy的一套API,在非常多比較老旧的项 ...

  7. [ 流行的网络框架 ] AFN & ASI

    1.AFN & ASI(早已经停止更新,但现在许多公司也在使用.) AFNetWorking地址:https://github.com/AFNetworking/AFNetworking AS ...

  8. ASI与AFN网络请求的的比较

    对比 ASI AFN 更新状态 2012年10月份,已经停止更新 持续更新中,目前已更新至3.0版 介绍 ASI的直接操作对象ASIHTTPRequest,是一个实现了了NSCopying协议的NSO ...

  9. iOS开发遇到的坑之三--使用asi框架在xcode下正常运行,但是打包时却不能进行网络访问

    前言: 前两篇博客遇到的问题是前几天在实验室开发的时候遇到的,花了两三天时间在上面,今天突然心血来潮,想把这些”坑”写下来,所以才有了这两篇写的很丑的博客随笔 今天在开发时又遇到一个问题,那就是标题所 ...

随机推荐

  1. Vs使用EF来操作MySql(经验 )

    1.安装Vs2015,至少是2012以上版本才行 2. 安装 这个是用于连接Mysql数据库的Vs插件 2.1通过这种方式添加引用 3.配置数据库 // // // 4.添加实体 注:这里最好从数据库 ...

  2. 爬虫之selenium爬取斗鱼主播图片

    这是我GitHub上简单的selenium介绍与简单使用:https://github.com/bwyt/spider/tree/master/selenium%E5%9F%BA%E7%A1%80 & ...

  3. P4544 [USACO10NOV]购买饲料Buying Feed

    额,直接思路就dp吧.(我还想了想最短路之类的233但事实证明不行2333.....) 直入主题: 化简题意:在x轴上有n个点,坐标为xi.从原点出发,目标点为e,在途中需要收集K重量的物品,在每个点 ...

  4. 只需十四步:从零开始掌握Python机器学习(附资源)

    转载:只需十四步:从零开始掌握Python机器学习(附资源) Python 可以说是现在最流行的机器学习语言,而且你也能在网上找到大量的资源.你现在也在考虑从 Python 入门机器学习吗?本教程或许 ...

  5. 转载]OK6410之tftp下载内核,nfs挂载文件系统全过程详解[转]

    原文地址:OK6410之tftp下载内核,nfs挂载文件系统全过程详解[转]作者:千山我独行 由于工作的平台也是嵌入式,差不多的平台,所以一直就没有把自己买过来的ok6410板子好好玩玩.以前一直都是 ...

  6. day6-作业(不完整)

    # 1.用代码实现:利用下划线将列表的'每一个元素'拼接成字符串 li=['ndfj','dlfj',12434]# 注意是将元素与元素转换为字符串之间用_拼接,而不是将每个字符串进行拼接 li=[' ...

  7. elastalter邮件告警

    一:简介 ElastAlert是一个简单的框架,用于通过Elasticsearch中的数据异常警告,峰值或其他感兴趣的模式. 监控类型 "匹配Y时间内有X个事件的地方"(frequ ...

  8. 开启docker远程访问

    开启docker远程访问 进入到/lib/systemd/system/docker.service vim /lib/systemd/system/docker.service 找到ExecStar ...

  9. 怎样判断有没有SQL注入漏洞及原理?

    来源:实验楼 最为经典的单引号判断法: 在参数后面加上单引号,比如: http://xxx/abc.php?id=1' 如果页面返回错误,则存在 Sql 注入. 原因是无论字符型还是整型都会因为单引号 ...

  10. Linux软件包管理和磁盘管理实践

    一.自建yum仓库,分别为网络源和本地源 本地yum仓库的搭建就是以下三个步骤: 创建仓库目录结构 上传相应的包到目录下,或者直接挂载光盘也行,如果挂载光盘,第三步就可以省略,因为光盘默认里有repo ...