2014-09-17 2 views
0

Alamofire 예제 코드를 다이제스트 인증을 지원하려고 변경했지만 작동시키지 못합니다.Alamofire를 사용하여 Swift에서 다이제스트 인증

Optional(<NSHTTPURLResponse: 0x7fa0c3525320> { URL: https://172.16.0.56/ } { status code: 401, headers { 
"Accept-Ranges" = bytes; 
"Cache-Control" = "no-cache"; 
Connection = "keep-alive"; 
"Content-Length" = 163; 
"Content-Type" = "text/html; charset=UTF-8"; 
Date = "Wed, 17 Sep 2014 16:45:29 GMT"; 
Expires = 0; 
Server = "MyServer"; 
"Www-Authenticate" = "Digest realm=\"myrealm\", nonce=\"4642875290551863156110287\", algorithm=\"MD5\", qop=\"auth\", stale=\"FALSE\""; 
} }) 

Alamofire 더 비표와 해시 다시 서버에 사용자 이름과 암호를 보내려고 반환하지 않습니다 보인다 : 다음이 코드를 실행하면

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if let detailViewController = segue.destinationViewController.topViewController as? DetailViewController { 
     func requestForSegue(segue: UIStoryboardSegue) -> Request? { 
      switch segue.identifier { 
       case "GET": 
        let user = "Administrator" 
        let password = "password" 

        let credential = NSURLCredential(user: user, password: password, persistence: .ForSession) 
        let protectionSpace = NSURLProtectionSpace(host: "172.16.0.56", port: 443, `protocol`: "https", realm: "myrealm", authenticationMethod: NSURLAuthenticationMethodHTTPDigest) 
        return Alamofire.request(.GET, "https://172.16.0.56") 
         .authenticate(usingCredential: credential, forProtectionSpace: protectionSpace) 
         .response {(request, response, _, error) in 
          println(response) 
       } 
       default: 
        return nil 
      } 
     } 

     if let request = requestForSegue(segue) { 
      detailViewController.request = request 
     } 
    } 
} 

나는 다음과 같은 응답을 난 그냥 '승인되지 않은'페이지를 다시 서버에서 얻을. Alamofire가 내 대신에 다이제스트 인증을 수행해야합니까? 아니면 직접 작성해야하는 코드가 더 있습니까?

답변

2
+0

예 다시 시도했지만 모든 것이 작동했습니다. 위의 방법이 아닌 기본 인증 방법을 따라 작업하고 있습니다. 인증 테스트는이 작업을 수행하는 데 유용했습니다. 감사. 아직 AlamoFire를 프로젝트에 연결하는 데 문제가 있지만 문제가 계속되면 다른 질문으로 게시 할 것입니다. 감사 – iphaaw