2016-11-22 8 views
0

私はhttps接続にAlamofireを使用しています。 AlamofireでテストするときAlamofire 4 FAILURE With Swift 3.0:エラードメイン= NSURLErrorDomainコード= -999 "cancelled"

は、しかし、私はこのエラーを取得する:私はxcode8.1枝からスウィフト3とAlamofire 4.0を使用してい

var defaultManager = Alamofire.SessionManager.default 
      let serverTrustPolicies: [String: ServerTrustPolicy] = [ 
       "192.168.X.XX:443": .disableEvaluation, 
       "192.168.X.XX": .disableEvaluation 
      ] 

    let configuration = URLSessionConfiguration.default 
     configuration.timeoutIntervalForRequest = 30 //seconds 
     configuration.httpAdditionalHeaders = Alamofire.SessionManager.defaultHTTPHeaders 

     //defaultManager = SessionManager(configuration: configuration, delegate: SessionDelegate(), serverTrustPolicyManager: ServerTrustPolicyManager(policies: serverTrustPolicies)) 
     defaultManager = SessionManager(configuration: configuration, serverTrustPolicyManager: ServerTrustPolicyManager(policies: serverTrustPolicies)) 

     defaultManager.request("https://192.168.X.XX/VMSSite/Handlers/Common/iOSServer.ashx?RegID=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", method: .post, parameters: nil, encoding: JSONEncoding.default).responseJSON { response in 
      debugPrint(response) 

    var statusCode = response.response?.statusCode 

     if let error = response.result.error as? AFError { 
      statusCode = error._code // statusCode private 
      switch error { 
      case .invalidURL(let url): 
       print("Invalid URL: \(url) - \(error.localizedDescription)") 
      case .parameterEncodingFailed(let reason): 
       print("Parameter encoding failed: \(error.localizedDescription)") 
       print("Failure Reason: \(reason)") 
      case .multipartEncodingFailed(let reason): 
       print("Multipart encoding failed: \(error.localizedDescription)") 
       print("Failure Reason: \(reason)") 
      case .responseValidationFailed(let reason): 
       print("Response validation failed: \(error.localizedDescription)") 
       print("Failure Reason: \(reason)") 

       switch reason { 
       case .dataFileNil, .dataFileReadFailed: 
        print("Downloaded file could not be read") 
       case .missingContentType(let acceptableContentTypes): 
        print("Content Type Missing: \(acceptableContentTypes)") 
       case .unacceptableContentType(let acceptableContentTypes, let responseContentType): 
        print("Response content type: \(responseContentType) was unacceptable: \(acceptableContentTypes)") 
       case .unacceptableStatusCode(let code): 
        print("Response status code was unacceptable: \(code)") 
        statusCode = code 
       } 
      case .responseSerializationFailed(let reason): 
       print("Response serialization failed: \(error.localizedDescription)") 
       print("Failure Reason: \(reason)") 
       // statusCode = 3840 ???? maybe.. 
      } 

      print("Underlying error: \(error.underlyingError)") 
     } else if let error = response.result.error as? URLError { 
      print("URLError occurred: \(error)") 
     } else { 
      print("Unknown error: \(response.result.error)") 
     } 

     print("status code: \(statusCode)") // the status code 
    } 
} 

URLError occurred: URLError(_nsError: Error Domain=NSURLErrorDomain Code=-999 "cancelled" UserInfo={NSErrorFailingURLKey=https://192.168.X.XX/VMSSite/Handlers/Common/iOSServer.ashx?RegID=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX, NSLocalizedDescription=cancelled, NSErrorFailingURLStringKey=https://192.168.X.XX/VMSSite/Handlers/Common/iOSServer.ashx?RegID=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}) status code: nil 

私のソースは、次のようになります。 私を助けてください。

そして

どのようにダイナミック・ホスト名には、ATSに例外ドメインの値を設定するには?

注:このコードでbypassURLAuthenticationを使用している場合は、httpsで正常に動作します。投稿ごとにhere bypassURLAuthenticationはPRODUCTIONには使用しないでください。だから私はこの問題を解決するために助けが必要です。

+0

参照してくださいhttp://stackoverflow.com/a/42985488/746347 – mixel

答えて

0

使用この: -

Alamofire.request("https://192.168.X.XX/VMSSite/Handlers/Common/iOSServer.ashx?RegID=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", method: .post, parameters: nil, headers: nil).responseJSON { (response:DataResponse<Any>) in 

switch(response.result) { 
      case .success(_): 
       if let data = response.result.value{ 
      print("your response data \(response.data!)") 

       } 
       break 

      case .failure(_): 
       print(response.result.error) 


       break 

      } 


} 
+0

私はこれを試してみましたが、SSL(serverTrustPolicies)でリクエストしたいので、私が使用していたコードを見るとAlamofire.requestを使用できません。sessionmanager私はこのエラーが発生していると要求を呼び出す。 –

0

あなたのdefaultManagerインスタンスへの参照を保持する必要があります。それ以外の場合は、レスポンスが返される前にセッションマネージャの割り当てが解除されます。詳細については、こちらをご覧ください。https://github.com/Alamofire/Alamofire/issues/157

0

defaultManagerあなたのクラスのグローバルプロパティ。

関連する問題