如何将TTURLRequest和OAuthConsumer搭配使用
浏览:2439次 出处信息
TTURLRequest是three20开发框架提供的一个url请求类,它是NSURLRequest类的扩展,有如下优点:
- post数据方便,只需要构建一个参数的dictionary就可以了,像get方法一样简单
- 支持磁盘缓存,而NSURLRequest仅支持内存缓存
- 因为TTTableViewController + TTURLRequestModel的存在,搭配使用效果良好
在ios的开发中我有时也用到了OAuthConsumer进行oauth授权,利用OAuthConsumer的fetcher类请求远程数据,所以我想TTURLRequest和OAuthConsumer能不能搭配使用,这样就能用上three20相关便利方法加载远程数据。于是做了点简单的测试,果然成功了:)大体思路是:
- 先利用OAuthConsumer根据提交的参数计算出oauth的Authorization认证头
- 把Authorization头加到TTURLRequest
- 由TTURLRequest提交数据。
直接上代码说话:
计算Authorization头
利用OAuthConsumer计算出Authorization头,为之后的请求做准备
//start
OAConsumer * consumer = [[OAConsumer alloc] initWithKey:yourConsumerKey secret:yourSecret];
NSURL * url = [NSURL URLWithString:@"http://your-api-host/your-method"];
OAToken * authToken = [[OAToken alloc] initWithKey:yourAuthToken secret:yourAuthSecrent];
OAMutableURLRequest * request = [[OAMutableURLRequest alloc] initWithURL:url
consumer:consumer
token:authToken
realm:nil
signatureProvider:[[[OAPlaintextSignatureProvider alloc] init] autorelease]];
[request setHTTPMethod:@"POST"];
NSMutableArray * params = [NSMutableArray array];
OARequestParameter * p1 = [[OARequestParameter alloc] initWithName:@"param1" value:@"i'm param1"];
[params addObject:p1];
[request setParameters:params];
[request prepare];
TTDINFO(@"Authorization is %@", [request valueForHTTPHeaderField:@"Authorization"]);
使用TTURLRequest请求数据
将Authorization头附加到TTURLRequest,然后请求远程接口
TTURLRequest* req = [TTURLRequest requestWithURL:request.URL.absoluteString delegate:self];
req.response = [[[TTURLDataResponse alloc] init] autorelease];
req.httpMethod = @"POST";
req.cachePolicy = TTURLRequestCachePolicyNone;
[req setValue:[request valueForHTTPHeaderField:@"Authorization"] forHTTPHeaderField:@"Authorization"];
[req send];
这个方法不需要对TTURLRequest进行修改,简单有效。
建议继续学习:
- 基于PECL OAuth打造微博应用 (阅读:4809)
- 新浪微博OAuth认证流程分析 (阅读:4660)
- 深入理解OAuth与豆瓣OAuth test (阅读:4599)
- 在sae中利用SaeFetchurl进行豆瓣的OAuth授权 (阅读:4279)
- PHP for Twitter OAuth 教学演示 (阅读:4262)
- OAuth那些事儿 (阅读:3812)
- OAuth 1.0a与1.0协议的改进… (阅读:3476)
- 【社会化设计】自我(self)部分――授权 (阅读:3312)
- 【社会化设计】自我(self)部分――密码反面模式(the Password Anti-pattern) (阅读:3271)
- 新浪微博 Android SDK中OAuth2.0隐式授权部分的一个代码逻辑问题 (阅读:3147)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:geohash:用字符串实现附近地点搜索
后一篇:网络编程中Nagle算法和Delayed ACK的测试 >>
文章信息
- 作者:Volcano 来源: 某人的栖息地
- 标签: OAuth OAuthConsumer TTURLRequest
- 发布时间:2011-07-05 23:16:59
建议继续学习
近3天十大热文
-
[928] WordPress插件开发 -- 在插件使用 -
[134] 解决 nginx 反向代理网页首尾出现神秘字 -
[55] 整理了一份招PHP高级工程师的面试题 -
[52] 海量小文件存储 -
[52] 全站换域名时利用nginx和javascri -
[52] 如何保证一个程序在单台服务器上只有唯一实例( -
[51] 用 Jquery 模拟 select -
[50] CloudSMS:免费匿名的云短信 -
[50] Innodb分表太多或者表分区太多,会导致内 -
[48] jQuery性能优化指南
