2016-10-08 2 views
2

Alamofire를 사용하고 있으며 내 서버에서 JSON 피드를 가져 오려고합니다. 서버에는 사용자와 암호를 통한 자체 서명 인증서와 액세스 권한이 있습니다.Alamofire 4 - Swift 3 - 인증서 및 자체 서명

여기 내 코드

let user = "user" 
    let password = "password" 

    let url1 = "https://10.0.1.2:4711/fhem/?cmd=jsonlist2&XHR=1" 
    let credential = URLCredential(user: user, password: password, persistence: .forSession) 

    let serverTrustPolicies :[String: ServerTrustPolicy] = [ 
    "10.0.1.8": .disableEvaluation 
    ] 


    let AlamoSession = SessionManager(serverTrustPolicyManager: ServerTrustPolicyManager(policies: serverTrustPolicies)) 
    AlamoSession.request(url1) 
     .authenticate(usingCredential: credential) 
     .responseJSON { response in 
      debugPrint(response.response) 
      print("Result value \(response.result.value)") 
      //print (response.result.value?.valueForKey("status")) 
    } 

입니다하지만도 작동합니까!

어떻게 만들 수 있습니까?

https URL은 자기 서명 된 인증서로 요청을 받습니까 ?? 임의 하중을 허용 - - 내 APP에서의 Info.plist에서

내가는 앱 운송 보안 설정이 추가

답변

1

YES이 코드를 사용하여 SSL 오류를 무시했다.

import Alamofire 

struct WebAPI { 
    static let sessionManager: SessionManager = { 
     switch MyEnvironment.server { 
     case .development: 
      return Alamofire.SessionManager(
       serverTrustPolicyManager: ServerTrustPolicyManagerForDevelop() 
      ) 
     case .staging, .production: 
      return Alamofire.SessionManager() 
     } 
    }() 

    private class ServerTrustPolicyManagerForDevelop: ServerTrustPolicyManager { 

     init() { 
      super.init(policies: [:]) 
     } 

     override func serverTrustPolicy(forHost host: String) -> ServerTrustPolicy? { 
      return .disableEvaluation 
     } 
    } 

}