Ошибка CFNetwork SSLHandshake (-9824) Загрузка URL-адреса в UIWebView

Все сообщения и руководства, к которым я обращался, дают решение для редактирования файла info.plist, и я сделал то же самое.

Редактирование файла plist работает для google.co.in, но не работает для https://www.onlinesbi.com

Я просто хочу знать свою ошибку Пожалуйста, направьте.

Моя информация.plist

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
     "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
        <dict>
    <key>CFBundleDevelopmentRegion</key>
    <string>en</string>
    <key>CFBundleExecutable</key>
    <string>$(EXECUTABLE_NAME)</string>
    <key>CFBundleIdentifier</key>
    <string>com.abcd.abcdAppstore.$(PRODUCT_NAME:rfc1034identifier)</string>
    <key>CFBundleInfoDictionaryVersion</key>
    <string>6.0</string>
    <key>CFBundleName</key>
    <string>$(PRODUCT_NAME)</string>
    <key>CFBundlePackageType</key>
    <string>BNDL</string>
    <key>CFBundleShortVersionString</key>
    <string>1.0</string>
    <key>CFBundleSignature</key>
    <string>????</string>
    <key>CFBundleVersion</key>
    <string>1</string>
    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSExceptionDomains</key>
        <dict>
            <key>www.onlinesbi.com</key>
            <dict>
                <key>NSTemporaryExceptionRequiresForwardSecrecy</key> <false/>
                <!--Include to allow subdomains-->
                <key>NSIncludesSubdomains</key>
                <true/>
                <!--Include to allow insecure HTTP requests-->
                <key>NSExceptionAllowsInsecureHTTPLoads</key>
                <true/>
                <!--Include to specify minimum TLS version-->
                <key>NSExceptionMinimumTLSVersion</key>
                <string>TLSv1.2</string>
            </dict>
        </dict>
    </dict>
    </dict>
</plist>

Мой ViewController

    private var URL = "https://www.onlinesbi.com"
override func viewDidLoad() {
        super.viewDidLoad()
let url = NSURL (string: URL);
            let requestObj = NSURLRequest(URL: url!);
            myWebview.loadRequest(requestObj);
}//viewDidLoad closes here....

РЕДАКТИРОВАТЬ

Я попытался обновить свой info.plist до:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>CFBundleDevelopmentRegion</key>
    <string>en</string>
    <key>CFBundleExecutable</key>
    <string>$(EXECUTABLE_NAME)</string>
    <key>CFBundleIdentifier</key>
    <string>com.abcd.abcdAppstore.$(PRODUCT_NAME:rfc1034identifier)</string>
    <key>CFBundleInfoDictionaryVersion</key>
    <string>6.0</string>
    <key>CFBundleName</key>
    <string>$(PRODUCT_NAME)</string>
    <key>CFBundlePackageType</key>
    <string>BNDL</string>
    <key>CFBundleShortVersionString</key>
    <string>1.0</string>
    <key>CFBundleSignature</key>
    <string>????</string>
    <key>CFBundleVersion</key>
    <string>1</string>
    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSExceptionDomains</key>
        <dict>
            <key>onlinesbi.com</key>
            <dict>
                <key>NSIncludesSubdomains</key>
                <true/>
                <key>NSExceptionAllowsInsecureHTTPLoads</key>
                <true/>
                <key>NSExceptionRequiresForwardSecrecy</key>
                <true/>
                <key>NSExceptionMinimumTLSVersion</key>
                <string>TLSv1.2</string>
                <key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
                <false/>
                <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
                <true/>
                <key>NSThirdPartyExceptionMinimumTLSVersion</key>
                <string>TLSv1.2</string>
                <key>NSRequiresCertificateTransparency</key>
                <false/>
            </dict>
        </dict>
    </dict>
</dict>
</plist>

Но все еще веб-представление пусто. :-(

Также я пытался отредактировать параметр "Разработчик" моего симулятора, но безуспешно.

Любая помощь будет оценена. заранее спасибо


person Pawan    schedule 02.02.2016    source источник
comment
Я также получаю ошибку того же типа 2016-02-16 23:46:28.598 sslcMerchant[2982:314081] CFNetwork SSLHandshake failed (-9824) 2016-02-16 23:46:28.598 sslcMerchant[2982:314082] NSURLSession/NSURLConnection Загрузка HTTP ошибка (kCFStreamErrorDomainSSL, -9824)   -  person matinict    schedule 16.02.2016
comment
@matinict Я все еще застрял на этом этапе. не знаю почему!! google.co.in работает, но onlinesbi.co.in не работает. Может быть проблема с сертификатом!! Если бы мы могли точно знать проблему с сертификатом, то, по крайней мере, мы могли бы исправить это в наших проектах. :-(   -  person Pawan    schedule 18.02.2016


Ответы (3)


Наконец получил ответ в виде:

  1. Я начал свой код с Xcode 6.x и iOS версии 7.x, но через некоторое время я обновил свой Xcode до Xcode 7.x и iOS версии 9.x. Таким образом, Xcode автоматически внес некоторые изменения. В этих автоматических изменениях произошло что-то не так, и UIWebview начал работать странно.

  2. Как я пришел к выводу в пункте выше ?? Ответ: Я сделал новый проект на Xcode 7.x и iOS 9.x, тогда код работал правильно.

  3. Что такое окончательный info.plist?


Как предположил матиник,

<dict>
        <key>NSAppTransportSecurity</key>
        <dict>
            <key>NSAllowsArbitraryLoads</key>
            <true/>
        </dict>

работал на меня.

Просто я оставил это в конце, а не в начале.

person Pawan    schedule 19.02.2016

info.plist, как показано ниже, или просто скопируйте и вставьте эту работу для меня до iOS 9.2

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>NSAppTransportSecurity</key>
        <dict>
            <key>NSAllowsArbitraryLoads</key>
            <true/>
        </dict>

    <key>CFBundleDevelopmentRegion</key>
    <string>en</string>
    <key>CFBundleExecutable</key>
    <string>$(EXECUTABLE_NAME)</string>
    <key>CFBundleIdentifier</key>
    <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
    <key>CFBundleInfoDictionaryVersion</key>
    <string>6.0</string>
    <key>CFBundleName</key>
    <string>$(PRODUCT_NAME)</string>
    <key>CFBundlePackageType</key>
    <string>APPL</string>
    <key>CFBundleShortVersionString</key>
    <string>1.0</string>
    <key>CFBundleSignature</key>
    <string>????</string>
    <key>CFBundleVersion</key>
    <string>1.0</string>
    <key>LSRequiresIPhoneOS</key>
    <true/>
    <key>UILaunchStoryboardName</key>
    <string>LaunchScreen</string>
    <key>UIMainStoryboardFile</key>
    <string>Main</string>
    <key>UIRequiredDeviceCapabilities</key>
    <array>
        <string>armv7</string>
    </array>
    <key>UISupportedInterfaceOrientations</key>
    <array>
        <string>UIInterfaceOrientationPortrait</string>
        <string>UIInterfaceOrientationLandscapeLeft</string>
        <string>UIInterfaceOrientationLandscapeRight</string>
    </array>
    <key>UISupportedInterfaceOrientations~ipad</key>
    <array>
        <string>UIInterfaceOrientationPortrait</string>
        <string>UIInterfaceOrientationPortraitUpsideDown</string>
        <string>UIInterfaceOrientationLandscapeLeft</string>
        <string>UIInterfaceOrientationLandscapeRight</string>
    </array>
</dict>
</plist>
person matinict    schedule 18.02.2016
comment
Нет, это не работает :-( Я добавил этот код: ‹dict› ‹key›NSAppTransportSecurity‹/key› ‹dict› ‹key›NSAllowsArbitraryLoads‹/key› ‹true/› ‹/dict› - person Pawan; 19.02.2016
comment
Он просто отображает белый экран, никакие исключения не печатаются в виде журналов. - person Pawan; 19.02.2016
comment
Я сделал новый проект и сделал тот же код, он работал совершенно правильно. Я думаю, что проблема была связана с обновлением версии Xcode и iOS. Спасибо за вашу поддержку (+1). - person Pawan; 19.02.2016

В последнее время я столкнулся с этой проблемой, и ответы, размещенные здесь, не сработали для меня... но я нашел другое решение, сделав это в AppDelegate (Swift)

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

Я надеюсь, что это поможет кому-то.

person VaroX    schedule 05.07.2016