您的位置:首页 > 理论基础 > 计算机网络

归纳笔记013:第三方网络请求ASIHTTPRequest的使用

2016-12-06 16:23 453 查看

使用ASIHTTPRequest从框架实现网络编程

ASIHTTPRequest支持如下功能

(1)   开发者只要面向简单的编程接口,即可向服务器端提交数据和从服务器端获取数据。

(2)   支持同步和异步请求。

(3)   从服务器下载的数据,既可存储到内存中,也可直接存储到磁盘中。

(4)   支持文件上传。

(5)   支持断点续传。

(6)   可以直接访问、修改HTTP请求与响应的头信息。

(7)   支持实时获取上传文件、下载文件的进度,从而向用户提供给更好的体验。

(8)   使用队列来管理上传、下载任务,并且可获取队列的进度信息。

(9)   支持Cookie。

(10) 支持请求与响应Gzip压缩数据。

(11) 内置的ASIDownloadCache类,可以缓存请求返回的数据,这样即使没有网络也可以返回已经缓存的数据结果。

(12) 使用ASIWwbPageRequest可以直接下载完整的网页,包括该网页包含的内嵌网页、样式单、JS脚本等资源,并可将下载的网页直接显示在UIWwbView/WebView中。任意大小的页面都可以无限期缓存,这样即使没有网络也可以离线浏览。

(13) 支持认证与授权。

(14) 支持通过代理发起HTTP请求。

(15) 支持带宽限制,可以根据当前网络情况来自动决定是否限制带宽。

发送同步或异步的GET请求

使用ASIHTTPRequest发送请求、接收响应只需如下几步:

(1)               根据请求URL创建ASIHTTPRequest对象。如果需要发送带请求参数的POST请求或上传文件,则需要根据请求URL创建ASIFormDataRequest对象。

(2)               如果要添加请求头,则调用ASIHTTPRequest对象的addRequestHeader:value:方法发送请求;如果要发送带请求参数的POST请求,则调用ASIFormDataRequest的setPostValue:forKey:方法添加请求参数;如果要上传文件,则调用ASIFormDataRequest的setFile:withFileName:andContentType:forKey:或setData:withFileName:andContentType:forKey:方法来设置要上传的文件路径或文件数据。

(3)               如果要发送同步请求,则调用ASIHTTPRequest对象的startSynchronous方法发送请求;如果要发送异步请求,则可通过如下两种方式来设置回调处理代码:

1)           为ASIHTTPRequest设置delegate对象,该delegate对象实现ASIHTTPRequestDelegate协议,当程序通过ASIHTTPRequest发送请求完成时、请求失败时都会激发delegate对象的特定方法。

2)           为ASIHTTPRequest设置请求完成、请求失败的代码块,当程序通过ASIHTTPRequest发送请求完成时、请求失败时都会激发相应的代码块。

 

(4)               当发送请求、获取响应成功后,可通过ASIHTTPRequest对象的responseString或responseData来获取服务器响应,其前者用于获取服务器形影的字符串,后者用于获取服务器响应的二进制数据;如果需要通过服务器响应的其他信息,则可通过如下方法来实现:

1)           responseStatusCode:获取服务器响应的状态码。

2)           responseStatusMessage:获取服务器响应的状态字符串。

3)           responseHeaders:获取服务器响应的全部响应头,该方法返回一个NSDictionary对象。

使用代码块

当程序使用ASIHTTPRequest发送异步请求时,即可用delegate为ASIHTTPRequest设置回调处理代码,也可使用代码块设置回调处理代码。代码块设置回调处理,则通过如下两个方法:

(1)   setCompletionBlock:设置发送请求、获取服务器响应完成时激发的代码块。

(2)   setFailedBlock:获取发送请求失败时激发的代码块。

使用NSOperationQueue管理请求

当使用NSOperationQueue来管理ASIHTTPRequest请求时,无须调用ASIHTTPRequest的startAsynchronous方法发送请求,只要将ASIHTTPRequest对象添加到NSOperationQueue的队列中即可。

为不同的ASIHTTPRequest设置不同的回调处理,有如下三种方式:

(1)               如果程序只是要简单地区分请求本身,则可通过为ASIHTTPRequest设置userInfo或tag属性,回调方法或回调代码块通过判断ASIHTTPRequest的userInfo、tag即可区分不同的请求,从而针对不同请求作出相应的处理。

(2)               如果需要对不同请求设置完全不同的回调处理,则可通过ASIHTTPRequest的setDidFinishSelector:或setDidFailSelector:方法为不同的请求分别设置不同的回调处理方法。

(3)               如果需要处理更复杂的情况,甚至需要在后台解析服务器响应,那么可以考虑为每个请求派生ASIHTTPRequest的子类,在子类中仅仅重写requestFinished:和failWitError:来提供自定义的回调处理即可

如果程序需要取消某个异步请求,则可调用如下两个方法之一:

(1)              cancel:取消调用该方法的ASIHTTPRequest对象所代表的异步请求,该请求将会当做发生错误处理。

(2)              clearDelegatesAndCancel:取消调用该方法的ASIHTTPRequest对象所代表的异步请求,该请求将会被当成错误处理。而且清除为该ASIHTTPRequest对象设置的delegate或所有回调处理代码块。

发送请求参数和文件上传

如果需要发送带参数的POST请求,或处理文件上传,则需要使用ADIFormDataRequest,它是ASIHTTPRequest的子类,专门用于发送带请求参数的POST请求,包括上传文件。

ASIFormDataRequest提供的方法即可添加请求头,也可添加参数,还可添加上传的文件。

使用ASIFormDataRequest与使用ASIHTTPRequest的方法大致相同,只是ADIFormDataRequest允许设置额外的请求参数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息