UIWebView加载https网页

原创 2015年11月20日 11:22:12
//
//  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

UIWebView加载自签名Https网页

ATS设置 按照惯例写一个UIWebView,用来加载网页: _webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, self.vie...
  • dkq972958298
  • dkq972958298
  • 2016年11月10日 14:36
  • 1796

IOS uiwebview中加载服务器上的html图片不显示

uiwebview显示服务器上的html,图片显示成问号,在电脑上用浏览器打开,图片显示403。但是将html保存到本地后打开就可以显示。 所以我在IOS中也是将服务器返回的html内容保存到了本地...
  • wanglj7525
  • wanglj7525
  • 2015年04月14日 15:22
  • 10315

UIWebView - 使用方法总结

现在对于混合式移动端开发越来越流行,因为开发成本上、速度上都比传统的APP开发要好,混合式开发是传统模式与PC网页端相结合的模式。那么提到了 APP的混合模式开发,在Android开发中有WebVie...
  • CatStarXcode
  • CatStarXcode
  • 2016年04月21日 18:43
  • 2494

iOS之支持https与ssl双向验证(包含:解决UIWebView加载不了https网页的图片,css,js等外部资源)

关于iOS的ATS适配和ssl双向验证,在我的项目中都实现了,但是对于苹果的审核,一定要详细的说明在plist文件你配置的键值是做什么的....
  • luochuanAD
  • luochuanAD
  • 2016年11月30日 17:07
  • 4147

cocos2d-x 学习日志(2)之使用UIWebView加载网页

  • 2013年08月07日 17:11
  • 5.6MB
  • 下载

iOS UIWebView 加载https 站点出现NSURLConnection/CFURLConnection HTTP load failed (kCFStreamErrorDomainSSL,

今天在加载https站点的时候遇到如下的错误问题。所以对自己之前写的iOS内嵌webview做了一些修改,可以让它加载http站点也可以让它加载https站点、 下面是我加载https站点的时候出...
  • wsq724439564
  • wsq724439564
  • 2014年05月15日 18:08
  • 16016

UIWebView 本地加载网页和文件(图片素材,js,css)(功能插件化)

技术思想就是先将开发完成的html功能打包压缩(zip)放在服务器上,移动端使用某个功能时就下载对应的压缩文件,然后移动端解压使用对应的网页文件。为了体验效果比较好,所以将这些放在本地。 1.建议将U...
  • Sun5579
  • Sun5579
  • 2017年05月09日 15:52
  • 179

【IOS 开发】UIWebView 加载本地文件,多层的网页目录结构失败分析和解决,以及demo

此方案解决了如下问题: 有一个本地可以打开的网页,这个网页是一个文件夹。文件夹里面是一个index.html。 同级还有其他的文件夹。 如图 要求使用 UIWebView 把此网页完全加载 ...
  • mangosnow
  • mangosnow
  • 2014年07月04日 13:11
  • 4598

iOS 禁用UIWebView 加载 网页的长按事件

用过UIWebView组件的开发者都知道,当UIWebView加载显示HTML页面时,组件本身提供了一些系统默认的交互行为,这些默认行为包括:        1.长按文本区域显示文字放大镜...
  • jinglijun
  • jinglijun
  • 2013年06月03日 21:57
  • 5711

ios UIWebView 加载网页、文件、 html

UIWebView  是用来加载加载网页数据的一个框。UIWebView可以用来加载pdf word doc 等等文件 生成webview 有两种方法,1、通过storyboard 拖拽 2、通...
  • JinigW
  • JinigW
  • 2016年10月20日 15:34
  • 191
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:UIWebView加载https网页
举报原因:
原因补充:

(最多只允许输入30个字)