UIWebView无法加载带有证书的链接(https://前缀)

5
我知道这个问题之前已经被问过了,但我已经查看了每一个答案(并不多),但没有一个能帮助我。
我遇到的问题是处理学校电子邮件服务证书的问题。两个电子邮件服务的链接在这里:
主要学校电子邮件: https://marauder.millersville.edu/mail/index.pl 计算机科学电子邮件: https://cs.millersville.edu/cswebmail 大学学生门户网站(我的UIWebView中点击右侧的Marauder Mail按钮时无法打开): http://myville.millersville.edu/ 起初,我使用标准的NSURL和NSURLRequest时,这两个网站都无法在我的UIWebView中加载。我在网上寻找解决方案,有人建议使用NSURLProtocolClient代理方法。在实现它们之后,只有当我有一个按钮直接打开链接时,我的UIWebView才会加载学校邮件电子邮件,而不是尝试从门户网站(上面的第3个链接)访问邮件,并且仍然无法加载计算机科学电子邮件链接。我已经搜遍了iOS帮助网站,发布了问题,尝试了多个开源自定义UIWebView,但我没有找到任何有效的解决方法。
大多数答案都指向ASIHTTPRequest。我已经尝试过这个,但我无法正确实现它,它无法在我的UIWebView中加载链接。以下是我加载链接的代码:
mURL = [self getURL:viewNumber];
ASIHTTPRequest *req = [ASIHTTPRequest requestWithURL:mURL];
[req setDelegate:self];
[req startSynchronous];

//NSURLRequest *req = [NSURLRequest requestWithURL:mURL];
//urlConnection=[[NSURLConnection alloc] initWithRequest:req delegate:self];
webView.scalesPageToFit = YES;
//[webView loadRequest:req];

在注释中编写代码可以不使用ASIHTTPRequest加载链接。

非常感谢您的帮助!

此外,我还有一个关于UIWebView的问题,请查看下面的链接。我还没有得到任何答案,如果您有空,请帮忙解决: UIWebView在网站上无法检测文本框

2个回答

2

我的问题已经解决了,我使用以下代码可以轻松加载https,我之前并没有想到这个方法,但它确实有效!:

NSURLRequest *req = [NSURLRequest requestWithURL:mURL];
urlConnection=[[NSURLConnection alloc] initWithRequest:req delegate:self];
webView.scalesPageToFit = YES;
[webView loadRequest:req];

3
这个解决方案不太好。现在你基本上是在两次加载页面。一次使用 ASIHTTPRequest,一次使用 UIWebView - Stefan Arentz
加载页面两次似乎是在iOS的后期版本中加载HTTPS的唯一方法。这是一个棘手的问题。 - Erik Reppen

0

由于证书不匹配,Web视图无法加载https网址。编写此扩展后,它将按预期工作

Swift 2.2

  extension NSURLRequest {
        static func allowsAnyHTTPSCertificateForHost(host: String) -> Bool
        {
            return true
        }
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接