ASIHttpRequest 摘要

2024-03-08 15:38
文章标签 asihttprequest 摘要

本文主要是介绍ASIHttpRequest 摘要,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

向服务器端上传数据
ASIFormDataRequest ,模拟 Form表单提交,其提交格式与 Header会自动识别。
没有文件:application/x-www-form-urlencoded
有文件:multipart/form-data
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[request setPostValue:@"Ben" forKey:@"first_name"];
[request setPostValue:@"Copsey" forKey:@"last_name"];
[request setFile:@"/Users/ben/Desktop/ben.jpg" forKey:@"photo"];
[request addData:imageData withFileName:@"george.jpg" andContentType:@"image/jpeg" forKey:@"photos"];
如果要发送自定义数据:
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request appendPostData:[@"This is my data" dataUsingEncoding:NSUTF8StringEncoding]];
// Default becomes POST when you use appendPostData: / appendPostDataFromFile: / setPostBody:
[request setRequestMethod:@"PUT"];
下载文件
通过设置request的setDownloadDestinationPa th,可以设置下载文件用的下载目标目录。
首先,下载过程文件会保存在temporaryFileDownloadPat h目录下。如果下载完成会做以下事情:
1,如果数据是压缩的,进行解压,并把文件放在downloadDestinationPath目录中,临时文件被删除
2,如果下载失败,临时文件被直接移到downloadDestinationPath目录,并替换同名文件。
如果你想获取下载中的所有数据,可以实现delegate中的request:didReceiveData:方法。但如果你实现了这个方法,request在下载完后,request并不把文件放在downloadDestinationPath中,需要手工处理。
获取响应信息
信息:status , header, responseEncoding
[request responseStatusCode];
[[request responseHeaders] objectForKey:@"X-Powered-By"];
[request responseEncoding];
获取请求进度
有两个回调方法可以获取请求进度,
1,downloadProgressDelegate ,可以获取下载进度
2,uploadProgressDelegate,可以获取上传进度
cookie的支持
如果Cookie存在的话,会把这些信息放在NSHTTPCookieStorage容器中共享,并供下次使用。
你可以用[ ASIHTTPRequest setSessionCookies:nil ] ; 清空所有Cookies。
当然,你也可以取消默认的Cookie策略,而使自定义的Cookie:
//Create a cookie
NSDictionary *properties = [[[NSMutableDictionary alloc] init] autorelease];
[properties setValue:[@"Test Value" encodedCookieValue] forKey:NSHTTPCookieValue];
[properties setValue:@"ASIHTTPRequestTestCookie " forKey:NSHTTPCookieName];
[properties setValue:@".allseeing-i.com" forKey:NSHTTPCookieDomain];
[properties setValue:[NSDate dateWithTimeIntervalSinc eNow:60*60] forKey:NSHTTPCookieExpires];
[properties setValue:@"/asi-http-request/tests" forKey:NSHTTPCookiePath];
NSHTTPCookie *cookie = [[[NSHTTPCookie alloc] initWithProperties:properties] autorelease];

//This url will return the value of the 'ASIHTTPRequestTestCookie ' cookie
url = [NSURL URLWithString:@" http://allseeing-i.com/ASIHTTPRequest/tests/read_cookie"];
request = [ASIHTTPRequest requestWithURL:url];
[request setUseCookiePersistence:NO];
[request setRequestCookies:[NSMutableArray arrayWithObject:cookie]];
[request startSynchronous];

//Should be: I have 'Test Value' as the value of 'ASIHTTPRequestTestCookie '
NSLog(@"%@",[request responseString]);
大文件断点续传
0.94以后支持大文件的断点下载,只需要设置:
[ request setAllowResumeForFileDow nloads:YES ];
[ request setDownloadDestinationPa th:downloadPath ];
就可以了。
ASIHTTPRequest会自动保存访问过的URL信息,并备之后用。在以下几个场景非常有用:
1,当没有网络连接的时候。
2,已下载的数据再次请求时,仅当它与本地版本不样时才进行下载。
ASIDownloadCache 设置下载缓存
它对Get请求的响应数据进行缓存(被缓存的数据必需是成功的200请求):
[ASIHTTPRequest setDefaultCache:[ASIDownloadCache sharedCache]];
当设置缓存策略后,所有的请求都被自动的缓存起来。
另外,如果仅仅希望某次请求使用缓存操作,也可以这样使用:
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setDownloadCache:[ASIDownloadCache sharedCache]];
多种的缓存并存
仅仅需要创建不同的ASIDownloadCache,并设置缓存所使用的路径,并设置到需要使用的request实例中:
ASIDownloadCache *cache = [[[ASIDownloadCache alloc] init] autorelease];
[cache setStoragePath:@"/Users/ben/Documents/Cached-Downloads"];
[self setMyCache:cache];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setDownloadCache:[self myCache]];
缓存策略
缓存策略是我们控制缓存行为的主要方式,如:什么时候进行缓存,缓存数据的利用方式。
以下是策略可选列表(可组合使用):
ASIUseDefaultCachePolicy
这是一个默认的缓存策略“ASIAskServerIfModifiedWh enStaleCachePolicy”,这个很明白,见名知意(它不能与其它策略组合使用)
ASIDoNotReadFromCacheCachePolicy
所读数据不使用缓存
ASIDoNotWriteToCacheCachePolicy
不对缓存数据进行写操作
ASIAskServerIfModifiedWhenStaleCachePolicy
默认缓存行为,request会先判断是否存在缓存数据。a, 如果没有再进行网络请求。 b,如果存在缓存数据,并且数据没有过期,则使用缓存。c,如果存在缓存数据,但已经过期,request会先进行网络请求,判断服务器版本与本地版本是否一样,如果一样,则使用缓存。如果服务器有新版本,会进行网络请求,并更新本地缓存
ASIAskServerIfModifiedCachePolicy
与默认缓存大致一样,区别仅是每次请求都会 去服务器判断是否有更新
ASIOnlyLoadIfNotCachedCachePolicy
如果有缓存在本地,不管其过期与否,总会拿来使用
ASIDontLoadCachePolicy
仅当有缓存的时候才会被正确执行,如果没有缓存,request将被取消(没有错误信息)
ASIFallbackToCacheIfLoadFailsCachePolicy
这个选项经常被用来与其它选项组合使用。请求失败时,如果有缓存当网络则返回本地缓存信息(这个在处理异常时非常有用)
如果设置了“defaultCachePolicy”则所有的请求都会使用此缓存。
缓存存储方式
你可以设置缓存的数据需要保存多长时间,ASIHTTPRequest提供了两种策略:
a,ASICacheForSessionDurati onCacheStoragePolicy,默认策略,基于session的缓存数据存储。当下次运行或[ASIHTTPRequest clearSession]时,缓存将失效。
b,ASICachePermanentlyCache StoragePolicy,把缓存数据永久保存在本地,
如:
ASIHTTPRequest *request = [ ASIHTTPRequest requestWithURL:url ];
[ request setCacheStoragePolicy:ASICachePermanentlyCache StoragePolicy ];
另外,也可以使用clearCachedResponsesForS toragePolicy来清空指定策略下的缓存数据。
缓存其它特性
设置是否按服务器在Header里指定的是否可被缓存或过期策略进行缓存:
[[ ASIDownloadCache sharedCache ] setShouldRespectCacheCon trolHeaders:NO ];
设置request缓存的有效时间:
[ request setSecondsToCache:60*60*24*30 ]; // 缓存30天
可以判断数据是否从缓存读取:
[ request didUseCachedResponse ];
设置缓存所使用的路径:
[ request setDownloadDestinationPa th:[[ ASIDownloadCache sharedCache ] pathToStoreCachedRespons eDataForRequest:request ]];
实现自定义的缓存
只要简单的实现ASICacheDelegate接口就可以被用来使用。
使用代理请求
默认的情况下,ASIHTTPRequest会使用被设置的默认代理。但你也可以手动修改http代理:
// Configure a proxy server manually
NSURL *url = [ NSURL URLWithString:@" http://allseeing-i.com/ignore"  ];
ASIHTTPRequest *request = [ ASIHTTPRequest requestWithURL:url ];
[ request setProxyHost:@"192.168.0.1" ];
[ request setProxyPort:3128 ];

// Alternatively, you can use a manually-specified Proxy Auto Config file (PAC)
// (It's probably best if you use a local file)
[request setPACurl:[NSURL URLWithString:@"file:///Users/ben/Desktop/test.pac"]];
ASIHTTPRequest, 请求的其它特性
iOS4中,当应用后台运行时仍然请求数据:
[ request setShouldContinueWhenApp EntersBackground:YES ];
是否有网络请求:
[ ASIHTTPRequest isNetworkInUse ]
是否显示网络请求信息在status bar上:
[ ASIHTTPRequest setShouldUpdateNetworkAc tivityIndicator:NO ];
设置请求超时时,设置重试的次数:
[ request setNumberOfTimesToRetryO nTimeout:2 ];
KeepAlive的支持:
     
// Set the amount of time to hang on to a persistent connection before it should expire to 2 minutes
[ request setPersistentConnectionT imeoutSeconds:120 ];

// Disable persistent connections entirely
[ request setShouldAttemptPersiste ntConnection:NO ];

这篇关于ASIHttpRequest 摘要的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/787572

相关文章

每日搜索论坛摘要:2024年9月6日

以下是通过搜索引擎圆桌会议及其他网络搜索论坛的视角,回顾今天在搜索论坛中发生的事件。 谷歌正在测试一种新的论坛显示方式,用于其搜索结果。谷歌广告增加了一个供图片选择的商家产品标签。谷歌将自动将谷歌广告和谷歌商家中心账户关联在一起。谷歌将使新广告商自动退出停放域名。谷歌广告要求博彩广告商重新认证。 搜索引擎圆桌会议的报道: 谷歌测试论坛搜索结果中的热门评论与相关讨论 谷歌向我们确认,他们正在

PDF 全文多语言 AI 摘要 API 数据接口

PDF 全文多语言 AI 摘要 API 数据接口 PDF / 文本摘要 AI 生成 PDF 文档摘要 AI 处理 / 智能摘要。 1. 产品功能 支持多语言摘要生成;支持 formdata 格式 PDF 文件流传参;快速处理大文件;基于 AI 模型,持续迭代优化;不存储 PDF 文件,处理完即释放,保证您的文档安全;全接口支持 HTTPS(TLS v1.0 / v1.1 / v1.2 /

云动态摘要 2024-09-04

给您带来云厂商的最新动态,最新产品资讯和最新优惠更新。 最新优惠与活动 [免费领用]电商出海AIGC福利包活动 腾讯云 2024-08-20 腾讯云智能助力中小电商企业用户出海,帮助企业用户轻松打造全场景AIGC应用。 注册阿里云免费领云服务器_云服务器ECS_阿里云 阿里云 2024-08-14 云上试用新玩法,个人享300元免费额度,企业享660元免费额度,多种规格随心试

获取知网摘要与PDF文件

进入知网网址:http://www.cnki.net/ 搜索知网关键词,例如离在岸人民币 顺序获取各文章题目和摘要,并优先进行PDF下载,如果没有PDF就进行CAJ下载,信息保存在items列表里。 下面为实现代码 # -*- coding: utf-8 -*-"""Created on Sun May 12 10:28:10 2019@author: Administrator"""

Python 实现 SHA-2 数字摘要签名算法

目录 使用 Python 实现 SHA-2 数字摘要签名算法的博客引言SHA-2 算法介绍SHA-2 算法的详细步骤Python 面向对象实现 SHA-256 算法代码解析应用场景:文件完整性验证总结 使用 Python 实现 SHA-2 数字摘要签名算法的博客 引言 SHA-2(Secure Hash Algorithm 2)是一组加密散列函数,由美国国家安全局(NSA

Python 实现 SHA-1 数字摘要签名算法

目录 Python 实现 SHA-1 数字摘要签名算法的博客引言SHA-1 算法介绍SHA-1 算法的详细步骤Python 面向对象实现 SHA-1 算法代码解释场景应用:文件完整性验证示例:文件完整性验证总结 Python 实现 SHA-1 数字摘要签名算法的博客 引言 SHA-1(Secure Hash Algorithm 1)是一种安全哈希算法,用于生成一个固定长度

【js逆向专题】5.消息摘要算法

摘要算法 在 JavaScript 中和 Python 中的基本实现方法,遇到 JS 加密的时候可以快速还原加密过程,有的网站在加密的过程中可能还经过了其他处理,但是大致的方法是一样的。 消息摘要算法/签名算法:MD5、SHA、HMAC 1. MD5 简介:全称 MD5 消息摘要算法,又称哈希算法、散列算法,由美国密码学家罗纳德·李维斯特设计,于 1992 年作为 RFC 1321 被公布

NLP-文本摘要:利用预训练模型进行文本摘要任务【transformers:pipeline、T5、BART、Pegasus】

一、pipeline 可以使用pipeline快速实现文本摘要 from transformers import pipelinesummarizer = pipeline(task="summarization", model='t5-small')text = """summarize: (CNN)For the second time during his papacy, Pope Fr

Python 潮流周刊#67:uv 的重磅更新(摘要)

本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章、教程、开源项目、软件工具、播客和视频、热门话题等内容。愿景:帮助所有读者精进 Python 技术,并增长职业和副业的收入。 分享了 12 篇文章,12 个开源项目,全文 2000 字。 以下是本期摘要: 🦄文章&教程 ① uv:统一的 Python 打包工具 ② PyJWT 和 pytho

程序员必读的职业规划书之摘要

之前读了这本书是因为勺勺的推荐我才看的,勺勺是我在北京实习的老师,我心中崇拜的大神,之前就已经把文章写好了,但是公司老没网,于是就用word保存了,现在复制出来,为了防止我以后忘记,摘要如下: 1.使用价值:   对技术人员来讲,遇到问题后能迅速分析问题,定位问题,给出解决方案,最终搞定问题的能力。 2.供需:  合理选择市场抓住机会,做好职业规划,即使薪资低,能够到好的公司工作