Three20 和未签名的证书
Posted
技术标签:
【中文标题】Three20 和未签名的证书【英文标题】:Three20 and Unsigned Certificates 【发布时间】:2011-08-16 13:07:45 【问题描述】:我正在使用 Three20 库重写我的应用程序。在我的应用程序中,我打开了指向各种网站的链接,其中一些包含具有未签名证书的网站。
在我的非three20 应用程序中,这是我加载此类网站的方式(使用 ASIHTTPRequest):
//=======================================================================================
// Once the correct URL is set, load it using ASIHTTPRequest
-(void)loadURL:(NSURL *)localURL
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];
if(regularLoad)
NSURLRequest *req = [[NSURLRequest alloc] initWithURL:localURL];
[webView loadRequest:req];
regularLoad = false;
else
ASIHTTPRequest *request = [[ASIHTTPRequest alloc] initWithURL:localURL];
[request setValidatesSecureCertificate:NO];
[request setDelegate:self];
[request startAsynchronous];
[request release];
//=======================================================================================
// Delegate method for ASIHTTPRequest
- (void)requestFinished:(ASIHTTPRequest *)request
// Use when fetching text data
NSString *responseString = [request responseString];
webView.scalesPageToFit = YES;
[webView loadhtmlString:responseString baseURL:request.url];
其中的主要部分是 webView 的 loadHTMLString 方法,这是 Three20 TTWebController 所没有的。
有人能在 Three20 中做到这一点吗?我已经在网上和这里搜索过,但没有找到解决方案。
感谢您的帮助!
【问题讨论】:
【参考方案1】:您可以扩展 TTWebController 类并自己添加缺少的 loadHTMLString 函数。
@interface WebController : TTWebController
/////////////////////////////////////////////////////////////////////////////////////////////
@implementation WebController
- (void)loadHTMLString:(NSString *)string baseURL:(NSURL *)baseURL
[_webView loadHTMLString:string baseURL:baseURL;];
您需要使用 init 函数创建 Web 控制器,而不是使用 TTNavigator 调用它,因此您将获得对它的引用
【讨论】:
将其添加到three20 作为改进可能是有意义的。问题是使用 TTNavigator 调用该函数将是一个问题..以上是关于Three20 和未签名的证书的主要内容,如果未能解决你的问题,请参考以下文章
UIViewController解耦---浅析Three20架构
Three20 TTNavigator TTViewController 自动加载XIB