ASIHTTPReques

ASIHTTPRequest与UITableView结合实现多任务下载 ASIHTTPRequest 是一个强大的 Objective-C 网络库,主要用于 Mac OS X 和 iPhone OS,适用于发起 HTTP 和 HTTPS 请求。它封装了 CFNetwork API,使得网络编程变得简单高效。ASIHTTPRequest 支持文件上传和下载、进度反馈、多部分表单数据上传和基本的认证。此外,它还具有自动重试机制,当遇到网络问题时可以重新发起请求。 阅读详情
ASIHTTPRequest是什么?

ASIHTTPRequest是简单易用的,它封装了CFNetwork API。使得与Web服务器通信变得更简单。它是用Objective-C编写的,可以在MAC OS X和iPhone应用中使用。

它适用于执行基本的HTTP请求和互动(或者说是反馈)。ASIFormDataRequest子类可以简单的实现提交数据和文件。使用multipart/form-data

提供了以下:

一个从web服务器提交和获取数据的接口

直接下载数据到内存或者本地文件系统里

能够从本地提交文件,作为post数据的一部分。兼容HTML file input mechanism

可以访问和修改http请求和响应header

获得上传下载的进度信息

异步请求和队列,自动管理上传下载队列机制

cookie 支持

请求和响应的gzip支持

代理请求


ASIHTTPRequest设置

在iphone 项目中使用ASIHTTPRequest

1、添加一些必要的文件,复制以下文件到项目中去

ASIHTTPRquestConfig.h

ASInputStream.h

ASInputStream.m

ASIHTTPRequest.h

ASIHTTPRequest.h

ASINSStringAdditions.h

ASINSStringAdditions.m

ASIFormDataRequest.h

ASIFormDataRequest.m

ASINetworkQueue.h

ASINetworkQueue.m

iphone项目还必须包含以下文件

ASIAuthenticationDialog.h

ASIAuthenticationDialog.m

一个版本的Reachability类


添加必要的框架到项目中去

CFNetwork.framework

SystemConfiguration.framework

libz.1.2.3.dylib


配置Reachability

在iphone上,ASIHTTPRequest使用Apple的Reachability类。

Reachability有两个版本,他们都能在ASIHTTPRequest发行文件的Reachability文件夹中找到。

2.0版本是最新的办迸。如果你的项目是基于iphone os 3.x和更新的系统,你应该使用2.0版本的。包括.h和.m文件。保证在ASIHTTPRequestConfig.h文件中REACHABILITY_20_API的值为1

1.5是个老版本,它和iphone os 2.2.1-iphone os 3.0兼容。保证在ASIHTTPRequestConfig.h文件中REACHABILITY_20_API的值为0


在mac ox x项目中使用AHIHTTPRequest

为了在Mac os x项目中使用ASIHTTPRequest,你需要导入以下:

SystemConfiguration.framework + zlib

CoreService.framework

在Mac OS X上,CFNetwork 是CoreServices框架的一部分。除非你写的是基于控制台的应用程序。


How to use

create asynchronous request

添加一个同步request

这是使用ASIHTTPRequest最简单的方法。发送一个startSynchronous消息。将在同一个进程中执行请求,在完成之后释放控制。

通过error属性来察看问题。

使用responseString可以得到string类型的response信息。

responseData方法用来获取一个NSData对象,或者更大的文件。不要使用这个方法来获取二进制的数据。

DownloadDestinationPath方法用来设置request,来下载到一个文件中。


 

-(IBAction)grabURL:(id)sender

{

NSURL*url=[NSURLURLWithString:@"http://allseeing-i.com"];

ASIHTTPRequest*request=[ASIHTTPRequestrequestWithURL:url];

[requeststartSynchronous];

NSError*error=[requesterror];

if(!error){

NSString*response=[requestresponseString];

}

}

 


 

注意:一般来说,使用异步请求优先于同步请求。当你从main进程中使用同步的ASIHTTPRequest。你的应用程序界面将会被锁住,并且,在这期间不能使用。

同步request只是用于没有界面的应用程序,例如终端。或者你运行在一个单独的进程中,并且你对它进行维护。

Creatingan asynchronous request

创建一个异步request

示例代码看起来干着同样的事情(或者理解为代码开起来是一样的),但是,request是在后台运行的


-(IBAction)grabURLInBackground:(id)sender
{
NSURL *url = [NSURLURLWithString:@"http://allseeing-i.com"];
ASIHTTPRequest *request = [ASIHTTPRequestrequestWithURL:url];
[requestsetDelegate:self];
[requeststartAsynchronous];
}  - (void)requestFinished:(ASIHTTPRequest *)request
{
// Usewhen fetching text data NSString *responseString = [request responseString];
  // Use when fetchingbinary data NSData *responseData = [request responseData];
}
  -(void)requestFailed:(ASIHTTPRequest *)request
{
NSError *error = [request error];
}

 

 


 



注意,我们为request设置委托,这样,我们就可以接收消息,无论request完成了还是失败了。

这是一个最简单的创建一个异步的request的方法,并且,它会运行在当前进程里。对于更 复杂的情况,你可能想创建一个队列,我们可以覆盖下一个(youmight want to create your own queue, which is what we’ll covernext.这里翻译的非常勉强….英语差啊…);

Using aqueue

使用一个队列

这个示例依然是做同样的事情,但是,我们将为我们的request添加一个NSOperationQueue对象。

使用NSOperationQueue(或ASINetWorkQueue,见下面示例)将 给你对异步request更多的控制。当使用队列的时候,只有确定数量的request可以同时运行。如果你添加的request超过了队列的 maxConcurrentOperationCount属性,request将在其他request运行完了之后运行。


-(IBAction)grabURLInTheBackground:(id)sender
{
if (![self queue]) {
[selfsetQueue:[[[NSOperationQueuealloc] init] autorelease]];
}

NSURL *url = [NSURLURLWithString:@"http://allseeing-i.com"];
ASIHTTPRequest *request = [ASIHTTPRequestrequestWithURL:url];
[requestsetDelegate:self];
[requestsetDidFinishSelector:@selector(requestDone:)];
[requestsetDidFailSelector:@selector(requestWentWrong:)];
[[self queue] addOperation:request]; //queue is anNSOperationQueue
}
- (void)requestDone:(ASIHTTPRequest *)request
{
NSString *response = [request responseString];
}
 
- (void)requestWentWrong:(ASIHTTPRequest *)request
{
NSError *error = [request error];
}

 

 


 



ASIHTTPRequest,是一个直接在CFNetwork上做的开源项目,提供了一个比官方更方便更强大的HTTP网络传输的封装。
ASIHTTPRequest 官方网站地址: http://allseeing-i.com/   
一、介绍
特色功能如下:
1.下载的数据直接保存到 内存或 文件系统里
2.提供直接提交(HTTP POST)文件的API
3.可以直接访问与修改HTTP请求与响应HEADER
4.轻松获取 上传与下载的进度信息
5.异步请求与队列,自动管理上传与下载队列管理机
6.认证与授权的支持
7.Cookie
8.请求与响应的GZIP
9.代理请求
ASIHTTPRequest -Main classes介绍:
1.ASIHTTPRequest:处理与 服务器的基本交互,包括下载上传,认证,cookies以及进度查看。
2.ASIFormDataRequest:是ASIHTTPRequest子类,主要处理post事件,它能使post更加简单。
3.ASINetworkQueue:是NSOperationQueue子类,当处理多个请求时可以 使用,如果每次都是单个请求就不必使用。
4.ASIDownloadCache:该类允许ASIHTTPRequest从服务器传递cookie。
ASIHTTPRequest -Support classes介绍:
1.ASIInputStream:当使用ASIHTTPRequest上传数据时使用,如果工程中用了ASIHTTPRequest,就一定要include这个类。
2.ASIAuthenticationDialog:该类允许ASIHTTPRequest连接到服务器时呈现登录框。在所有 iPhone OS工程中都要使用,Mac OS工程中可以不用。
3.Reachability:相信很多人对这个类已经很熟悉了,当在你程序中侦测网络状态时它将非常有用。
ASIHTTPRequest -Protocols and configuration介绍:
1.ASIHTTPRequestDelegate:该协议指定了ASIHTTPRequest的delegate可能需要实现的方法,所有方法都是optional。
2.ASIProgressDelegate:该协议列出了uploadProgressDelegate和downloadProgressDelegate 可能需要实现的方法,所有方法为optional。
3.ASICacheDelegate:该协议指定了download cache必须实现的方法。如果你要写你自己的download cache,确保实现required方法。
4.ASIHTTPRequestConfig.h: 该文件定义了编译时所有的全局配置选项。使用该文件中的方法可以在控制台中输出request正在进行的任务,Don't forget to turn these off in shipping applications!(这句啥意思?...?时候要关闭?)
二、安装:
http://allseeing-i.com/ASIHTTPRequest/Setup-instructions    网站上已经很详细了,拷贝类文件(如果不清楚用哪个就全拷)->添加frameworks->OK
掌握iOS中的异步队列下载技术 ASIHTTPRequest是一个开源的、非常受欢迎的用于iOS和Mac OS X的类库,允许开发者以非常简单的方式来发送HTTP请求。它由Allurent公司开发,并随后被社区接管。这个库的出现解决了原生URLSession(在iOS早期版本中称为NSURLConnection)使用复杂性的问题,简化了网络请求的编写。ASIHTTPRequest适用于多种场景,如文件下载、图像获取等,尤其适合处理需要大量网络请求的场景。库的设计目标之一是使网络操作简单,减少开发者编写和维护网络代码的工作量。 阅读详情

相关推荐

【10. Wi-Fi 通用模组-小米 IoT 平台-如何进行硬件调试】

调试APP功能:从米家服务器缓存读取设备状态,等同于米家APP 的环境,开发者使用该调试器可模拟用户使用设备的实际情况,即调试米家 App 中的扩展程序。- 调试固件:调试器从固件读取设备状态,用于调试设备模组固件的某个单项功能,开发者使用该调试器可针对性地调试设备的某个功能。小爱语控测试工具:如果当前产品可被小爱语控,则可以使用该工具调试语控效果。调试APP功能(云端缓存)

tuoyuanO的博客 1041

ASIHTTPReques用法

ASIHTTPRequest是什么? ASIHTTPRequest是简单易用的,它封装了CFNetwork API。使得与Web服务器通信变得更简单。它是用Objective-C编写的,可以在MAC OS X和iPhone应用中使用。 它适用于执行基本的HTTP请求和

huangbaoyu1840的专栏 1426

差分运放电路输出电压偏置设计解析

差分运算放大电路是信号处理中的基础模块,通过差分对管结构实现共模抑制与差模放大。其核心原理基于运放的虚短虚断特性,当电阻网络满足对称条件时,输出电压与输入差分成正比。在工业测量系统中,由于ADC通常仅支持正电压输入,需要通过偏置电路将双极性信号平移至正电压范围。典型设计采用精密基准电压源和匹配电阻网络,既保持信号完整性又满足系统接口要求。本文以-100V高压测量为例,详细解析了分压网络设计、参考电压选取以及电阻匹配等关键技术要点,为传感器接口电路设计提供实践参考。

weixin_35750747的博客 470

ASIHTTPReques相关简单用法

iphone项目还必须包含以下文件 ASIAuthenticationDialog.h ASIAuthenticationDialog.m 添加必要的框架到项目中去CFNetwork.framework 、SystemConfiguration.framework、libz.1.2.3.dylib ASIHTTPReques主要特色功能有: 1,下载的数据直接保存到内存或文件系统里...

weixin_30349597的博客 84

OCR模型轻量化新思路:用ONNX Runtime加速PP-OCRv4推理(附性能对比测试)

本文详细介绍了如何利用ONNX Runtime对PP-OCRv4模型进行轻量化部署与推理加速。通过模型导出优化、动态量化、线程绑定及内存复用等技巧,在树莓派、RK3588等边缘设备上实现了超过50%的性能提升,并显著降低了内存占用,为移动端OCR部署提供了完整的优化方案和实测数据对比。

weixin_29063979的博客 496

Python+OpenCV实战:雨天车牌识别准确率提升300%的5个关键技巧

本文针对雨天车牌识别准确率骤降的难题,分享了五个基于Python和OpenCV的实战技巧。通过暗通道先验去雾、雨纹抑制、光照不变量颜色空间转换、多尺度自适应阈值分割以及融合传统特征与轻量级深度学习的混合识别策略,系统性地提升了算法在恶劣天气下的鲁棒性。这些方法能有效解决图像模糊、对比度低、字符断裂粘连等问题,为智能交通等实际应用提供可靠解决方案。

k8l9m0n的博客 716

swift下ASIHttpReques、AFNetworkingt使用方式

let request = ASIFormDataRequest(URL: NSURL(string: "\(u_HOMEURL)/mail/sendCaptchaBtnMail")) request.timeOutSeconds = 10 request.responseEncoding = NSUTF8StringEncoding request

SilentDLO的专栏 911

【系统架构设计师-2025上半年真题】综合知识-参考答案及详解(75题完全回忆版)

【系统架构设计师-2025上半年真题】案例分析-参考答案及部分详解

数据知道的博客 1万+

[ios2]ASIHTTPReques 清除所有持久连接

http://www.winddisk.com/2012/08/27/iphone_screenlock_network_disconnection/ + (void)clearPersistentConnections { [connectionsLock lock]; NSUInteger i; for (i=0; i<[persistentConnectionsPool...

weixin_30849403的博客 76

DeepSeek 赋能智慧消防:以 AI 之力筑牢城市安全 “防火墙”

在数字化浪潮下,智慧消防系统亟需先进技术提升效能。DeepSeek 凭借 Transformer 架构与混合专家架构等核心技术,具备强大的多模态数据处理与智能决策能力,且支持本地化部署,保障数据安全。其在智慧消防领域的应用成效显著,从实现火灾风险动态感知与早期精准预警,到优化智能接警调度、设备健康管理,再到辅助应急指挥与疏散,有效降低火灾风险与事故损失。未来,DeepSeek 有望在智慧消防领域持续拓展,同时也需应对技术、数据等多方面挑战。

邓邓子的博客 1690

CloudCompare 二次开发(16)——计算点云最值

不依赖任何第三方点云相关库,使用ClopudCompare计算点云最值。

点云侠的博客 517

ASIHTTPRequest判断网络异常的使用

1、在用请求网络失败时,会调用的代理方法 - (void)requestFailed:(ASIHTTPRequest *)request

 仗剑走天涯 1787

华为od 面试八股文_C语言_01_含答案

华为od 面试八股文_C语言_01_含答案

MISAYAONE的博客 3225

Hayate

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33971205的博客 105

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

IOS学习笔记25—HTTP操作之ASIHTTPRequest(一)

ASIHTTPRequest是一个第三方开源项目,在现在的IOS应用中多使用到这个开源类库来提供网络操作,相比于SDK提供的网络操作类库,ASIHTTPRequest使用上更加方便、效率更高,同时功能也非常强大。这是ASIHttpRequest的官网:http://allseeing-i.com/ASIHTTPRequest/ 以下是官方对ASIHttpRequest的解释: What

Ryan's zone 9936

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

ASIHTTPRequest详解

第三方苹果开发库之ASIHTTPRequest   ASIHttpRequest库简介、配置和安装ASIHttpRequest-创建和执行requestASIHttpRequest-发送数据ASIHTTPRequest-下载数据ASIHTTPRequest-进度追踪ASIHTTPRequest-身份验证ASIHTTPRequest-HTTP授权-流程图ASIHTTPReques

温柔一刀的专栏 1269

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

ASIHTTPRequest的startAsynchronous调用EXC_BAD_ACCESS

一个简单的iOS应用,在主视图控制器类中,实现了ASIHTTPRequest的委托方法- (void)requestFinished:(ASIHTTPRequest *)request和- (void)requestFailed:(ASIHTTPRequest *)request。 在这个类的viewDidLoad方法中,调用ASIHTTPRequest的异步请求。 请求对象的定义为retai

miki西游 4781

多线程,socket,HTTP,ASIHttpRequest,等面试题总结集合

ASIDownloadCache 设置下载缓存 它对Get请求的响应数据进行缓存(被缓存的数据必需是成功的200请求): [ASIHTTPRequest setDefaultCache:[ASIDownloadCache sharedCache]]; 当设置缓存策略后,所有的请求都被自动的缓存起来。 另外,如果仅仅希望某次请求使用缓存操作,也可以这样使用:

u010607889的专栏 2624

iPhone 开发 之 ASIHTTPRequest (一)

<br />最近需要用到从网页抓取信息的API,就在看ASIHTTPRequest,这方面资料还是比较少的,cocoachina上有一点,自己也参考了下,网址在下面。我在官网上也看了一些,进行了一些简单的翻译。包括如何在自的项目中使用ASIHTTPRequest,之前自己摸索了半天都没成功,到官网上一看就o了。ASIHTTPRequest是什么?<br />ASIHTTPRequest是简单易用的,它封装了CFNetwork API。使得与Web服务器通信变得更简单。它是用Objective-C编写的,可以

iphoneing的专栏 2568

ASIHttpRequest常用方法

第一、根据url创建请求      ASIHTTPRequest *httpRequest = [ASIHTTPRequest requestWithURL:url];   第二、设置请求的方法    [httpRequest setRequestMethod:@"GET"]; 第三、设置最大连接超时时间    [httpRequest setTimeOutS

richard_如风的专栏 2461
上一篇: NSNotificationCenter用法实例
下一篇: NSNotificationCenter有什么作用
ch_soft
博客等级 码龄17年 828粉丝 166原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值