2016-01-13 50 views
0

我使用Alamofire V3與iOS 9,我做一個簡單的請求,如在解說Alamofire V3如何無效憑證

Alamofire.request(.GET, WS_URL) 
    .authenticate(user: user, password: password)      
    .validate(statusCode: 200..<300) 
    .responseJSON { response in 
     ... 
} 

第一有效的請求後,我改變了證書無效者並且請求成功,但它會失敗。

如何使先前憑證失效?

UPDATE

我已經找到了一個可能的解決方案,但我不知道這是最好的一個。

let plainString = "\(user):\(password) 
    let plainData = plainString.dataUsingEncoding(NSUTF8StringEncoding) 
    let base64String = plainData?.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(rawValue: 0)) 
    let headers = ["Authorization": "Basic " + base64String!] 
     Alamofire.request(.GET, urlRequest, headers: headers) 
     .authenticate(usingCredential: self.credential) 
     .responseJSON{ responseJson in 
      ... 
      } 

感謝

+0

你是怎麼解決才合適? – iOS

+1

正如我的評論寫的。有關更多解釋,請閱讀此:https://github.com/Alamofire/Alamofire#http-basic-authentication: 根據您的服務器實現,授權標頭也可能是合適的 – PGLongo

回答

0

假設你的終點是確定的,他們你越來越成功響應...

let定義了一個常數,它不能被修改一次設置。

var定義了一個變量可以。

嘗試使用一個變量來代替,如果您已經將它賦值編譯然後重新編譯。否則,使用不同的名稱作爲變量。

print他們看到他們的價值觀。

+0

這是示例代碼。問題不在於聲明爲let或var的變量。真正的代碼讀取uitextfields的值。 – PGLongo

+0

順便說一句,我編輯代碼刪除用戶名和密碼,以避免混淆 – PGLongo