【问题标题】:NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9843) with WebView.loadHTMLStringNSURLSession/NSURLConnection HTTP 加载失败 (kCFStreamErrorDomainSSL, -9843) 与 WebView.loadHTMLString
【发布时间】:2019-05-08 06:35:03
【问题描述】:

我使用SwiftUIWebView WebView.loadHTMLString(string, baseURL: nil) 并得到一个错误,

2019-05-08 13:52:58.758899+0800 钱包[439:41398] [] nw_coretls_callback_handshake_message_block_invoke_3 tls_handshake_continue: [-9807] 2019-05-08 13:52:58.813981+0800 钱包[439:41413] NSURLSession/NSURLConnection HTTP 加载失败 (kCFStreamErrorDomainSSL, -9843)

大部分类似的问题使用URLRequest,和我不同,

这是我的字符串

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Demo</title>
</head>
<body>
    <form action="https://**.****.**.***:29843/Pay/order/Order.htm"  method="post">
       <input type="text"  name="merchantName"  value="net">
    </form>
</body>
</html>


here I replace the ip address with *

override func viewDidLoad() {
super.viewDidLoad()


     WebView.loadHTMLString(mystring, baseURL: nil) //mystring'value is above
     WebView.delegate = self

}

func webViewDidFinishLoad(_ webView: UIWebView) {
    webView.stringByEvaluatingJavaScript(from: "document.getElementById('frmBankID').submit(); ")

}

现在我的iphone是白屏,我只是想显示页面,完全不介意安全性,任何方式获取页面,谢谢

【问题讨论】:

    标签: swift uiwebview


    【解决方案1】:

    根据 Apple,您的主机名 errSSLHostNameMismatch = -9843, /* peer host name mismatch */ 存在问题。你确定你有正确的网址吗?真的是https吗?域的 SSL 证书是否正确?

    文档:https://opensource.apple.com/source/libsecurity_ssl/libsecurity_ssl-40581/lib/SecureTransport.h

    【讨论】:

    • 我确定这是一个正确的 url,我确定它确实是 https,我不确定域的 SSL 证书是否正确,但是在 android 上,我们通过添加代码来获取页面: @Override public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { webView.getSettings() .setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW); } handler.proceed(); }
    • 所以,它也不能在安卓上运行?如果是这样的话,你有后端问题吗?
    • 嗯,好像你在 android 上做一个创可贴的解决方案,我认为最好修复后端配置问题而不是依赖该解决方案,这样它就不会在两个平台上都抛出 sslError
    • 谢谢,因为我们只是做一些测试,这是一个测试环境,后端知道问题不想解决,我们必须在iphone和android上显示页面,我想有一些方法可以跳过问题并显示页面。如果我们看不到页面,经理无法确定我们是否完成了编码。谢谢。
    • 然后尝试在 iOS 中捕获错误。通过navigationDelegatefunc webView(WKWebView, didFail: WKNavigation!, withError: Error)func webView(WKWebView, didFailProvisionalNavigation: WKNavigation!, withError: Error) 委托方法访问错误对象,看看是否可以从那里获取html。虽然我不确定是否可能
    猜你喜欢
    • 1970-01-01
    • 2015-01-06
    • 2016-04-24
    • 2015-09-04
    • 1970-01-01
    • 2016-10-19
    • 2016-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多