UIWebView加载https网页
2015-11-20 11:22
597 查看
// // ViewController.m // 02-HTTPS // // Created by xiaomage on 15/8/25. // Copyright (c) 2015年 xiaomage. All rights reserved. // #import "ViewController.h" @interface ViewController ()<NSURLConnectionDelegate, UIWebViewDelegate> { NSURLRequest *_request; } @property (weak, nonatomic) IBOutlet UIWebView *webView; @end @implementation ViewController - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { // NSString *str = [@"http://www.baidu.com" stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; NSString *str = [@"https://kyfw.12306.cn/otn/leftTicket/init" stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; NSURL *url = [NSURL URLWithString:str]; NSURLRequest *request = [NSURLRequest requestWithURL:url]; _request = request; if ([str hasPrefix:@"https://"]) { // https请求先发送connection请求,就会安装证书 NSURLConnection *connection = [NSURLConnection connectionWithRequest:request delegate:self]; [connection start]; NSLog(@"https请求"); }else{ // http请求直接加载 [self.webView loadRequest:request]; } } #pragma mark - NSURLConnectionDelegate 加载https网页,需要实现代理下面两个方法 /** * 安装证书 */ -(void)connection:(NSURLConnection *)connection willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge { if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]) { [challenge.sender useCredential:[NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust] forAuthenticationChallenge:challenge]; } [challenge.sender continueWithoutCredentialForAuthenticationChallenge:challenge]; } /** * 安装证书成功之后再加载https网页 */ -(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)pResponse { self.webView.scalesPageToFit = YES; [self.webView loadRequest:_request]; } /* // 另一种方法加载https网页 - (BOOL)connection:(NSURLConnection *)connection canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace { return YES; } - (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge { [challenge.sender useCredential:[NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust] forAuthenticationChallenge:challenge]; [self.webView loadRequest:_request]; } */ #pragma mark - UIWebViewDelegate /* - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { NSLog(@"%@", request.URL); return YES; } - (void)webViewDidStartLoad:(UIWebView *)webView { } - (void)webViewDidFinishLoad:(UIWebView *)webView { } - (void)webView:(UIWebView *)webView didFailLoadWithError:(nullable NSError *)error { } */ @end
相关文章推荐
- IOS中UIWebView加载Loading的实现方法
- UIWebView
- IOS之UIWebView的使用
- UIWebview点击图片实现大图浏览
- ios的webView加载本地html图片路径显示及webview适配
- 使用UIWebView与html实现网络请求
- UIWebView中Html中用JS调用OC方法及OC执行JS代码
- UIWebView内容搜索并且显示高亮背景颜色
- tableViewCell 上面webView 自适应高度
- UIScrollView的使用大全--contentsize,contentInset和contentInset
- iOS开发怎么加入优酷视频播放功能
- iOS解析---WebView和js交互原理
- 模块——UIWebview的应用
- 加载webView
- UIWebview 地理位置定位问题
- IOS开发 UIWebView使用详解(2)
- IOS开发 UIWebView使用详解(1)
- UIWebView 使用详解
- ios开发--UIWebView的使用
- UIWebView 清除缓存