Three20和未签名证书

时间:2011-08-16 13:07:45

标签: iphone ios ssl webview three20

我正在使用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 个答案:

答案 0 :(得分:1)

您可以扩展TTWebController类并自行添加缺少的loadHTMLString函数。

@interface WebController : TTWebController

/////////////////////////////////////////////////////////////////////////////////////////////
@implementation WebController

- (void)loadHTMLString:(NSString *)string baseURL:(NSURL *)baseURL {
  [_webView loadHTMLString:string baseURL:baseURL;];
}

您需要使用init函数创建Web控制器,而不是使用TTNavigator调用它,因此您将引用它