我有一個可用類,我想用它來連接到我正在構建的RESTful Web服務。我決定使用HTTP基本身份驗證我的PHP後臺是這樣的...我可以使用NSURLCredentialStorage進行HTTP基本認證嗎?
<?php
if (!isset($_SERVER['PHP_AUTH_USER'])) {
header('WWW-Authenticate: Basic realm="My Realm"');
header('HTTP/1.0 401 Unauthorized');
//Stuff that users will see if they click 'Cancel'
exit;
}
else {
//Validation Code
echo "You entered info.";
}
?>
在這一點上,我使用同步NSURLConnection的,這是我理解的蘋果文檔狀態有認證的支持較少。
但是它甚至有可能嗎?我可以很容易地進行cookie身份驗證,無需NSURLProtectionSpaces或NSURLCredentials或任何身份驗證類。另外,是否有任何資源可以閱讀關於Cocoa認證類的更多信息?
謝謝。
更新:mikeabdullahuk 您提供的代碼(第二個示例)與我所寫的代碼幾乎相同。我做得更多一些調查,並發現NSURLConnection的返回錯誤......
Error Domain=NSURLErrorDomain Code=-1012 UserInfo=0x1a5170 "Operation could not be completed. (NSURLErrorDomain error -1012.)"
的代碼對應於NSURLErrorUserCancelledAuthentication。所以顯然我的代碼沒有訪問NSURLCredentialStorage,而是取消了身份驗證。這可能與PHP HTTP身份驗證功能有關嗎?在這一點上我很困惑。
我挑戰任何後續NSURLConnection的遇到了這個。我非常喜歡ObjectiveC,但我想知道是否有任何對象(特別是憑證和保護空間)必須被釋放。順便說一句,我在異步調用(initWithRequest)上實現了這個方法,仍然得到了didReceiveAuthenticationChallenge回調。 – Bill 2009-02-03 22:17:37
@Bill,如果在生產代碼中使用保護空間,則需要釋放,正如我使用的+ alloc。 – 2009-02-10 12:24:25