SSL_ERROR_SSL(1): operation failed within the library

后端 未结 2 1726
囚心锁ツ
囚心锁ツ 2021-01-30 16:32

I am getting some SSL Errors (which are causing my project to stop/hang with no crash as I have a DispatchGroup waiting for the request), which I don\'

相关标签:
2条回答
  • 2021-01-30 17:01

    I had the same warning with codegen Swagger in emulator on any response call. But all worked. This warning disappeared only when I added environment variable Hide strange unwanted Xcode logs

    0 讨论(0)
  • 2021-01-30 17:02

    Deadlock

    I assume spotifyRequest will be called on the main thread.

    So if the main thread reaches the line

    group.wait()
    

    and this line of responseJSON completionHandler was not called yet:

    group.leave()
    

    then the main thread is blocked due to the call of group.wait() above. Due to the blocked main thread group.leave() can't be called. Classical deadlock.

    Verfication

    Setting a breakpoint to the line

    if let safeStatus = status {
    

    shows that this line is never called.

    Minimal Example that is running

    As a starting point here the code for a minimal example that delivers a result.

    import UIKit
    import Alamofire
    
    class ViewController: UIViewController {
    
        override func viewDidLoad() {
            super.viewDidLoad()
    
            self.contactSpotify {
                print ("result: \(String(describing: $0)) error: \(String(describing: $1))")
            }
        }
    
        func contactSpotify(completion: @escaping ([String: Any]?, Error?) -> Void) {
            let url = URL(string: "https://accounts.spotify.com/api/token")!
            Alamofire.request(url,
                              method: .post,
                              parameters: ["grant_type": "refresh_token",
                                           "client_id": "<someClientId>",
                                           "refresh_token": "<someRefreshToken>",
                                           "client_secret": "<someClientSecret>"])
                .validate()
                .responseJSON { response in
                    guard response.result.isSuccess else {
                        completion(nil, response.result.error)
                        return
                    }
    
                    completion(response.result.value as? [String: Any], nil)
            }
        }
    
    }
    

    This gives as output in the console:

    result: Optional(["access_token": XXX, "scope": user-read-email user-read-private, "token_type": Bearer, "expires_in": 3600]) error: nil
    

    see Screenshot:

    ATS Settings in info.plist

    Spotify offers a valid TLS certificate chain on their server. So there is no need for ATS settings in info.plist.

    SSL Warnings in Console

    I get the same SSL warnings in the console when I run the application on an iOS 12 simulator like you. Nonetheless the connection is established and the request delivers data. Perhaps this is gone in one of the next betas.

    0 讨论(0)
提交回复
热议问题