進一步的更新,2013年10月
雖然在我寫這個答案時,ASIHTTPRequest維持一個廣泛的支持,這已不再是這種情況。不建議用於新項目 - 直接使用NSURLConnection,或使用AFNetworking。
隨着AFNetworking,有一個[httpClient setAuthorizationHeaderWithUsername:username password:password];
方法進行HTTP身份驗證,並創建一個POST樣式表格也同樣容易 - 見AFNetworking Post Request。
原來的答覆:
很多人使用ASIHTTPRequest類來處理HTTP & HTTPS在iPhone/iPad的,因爲它有很多有用的功能,是困難或費時實現與內置類:
http://allseeing-i.com/ASIHTTPRequest/
在最簡單的級別開始,你會喜歡的東西開始:
NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com"];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request startSynchronous];
NSError *error = [request error];
if (!error) {
NSString *response = [request responseString];
NSLog(@"response = %@", response);
}
如果您使用HTTP身份驗證,ASIHTTPRequest將自動提示用戶輸入用戶名和密碼。
如果您使用其他形式的身份驗證,您可能需要自己向用戶請求用戶名和密碼,並將它們作爲POST值或自定義http頭提交,然後響應可能會包含令牌在JSON或XML響應中,或者它可以設置一個cookie。
如果您添加更多關於認證方案如何工作的細節,我可以更具體一些。
更新
基於更新,效仿你只需要添加線條像一個POST形式:
[request addPostValue:usernameString forKey:@"username"];
[request addPostValue:passwordString forKey:@"password"];
您還需要改變你創建請求的方式而不是:
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
做:
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
(我也忘了提及它,以前我提到的代碼是使用同步請求,所以你想用異步代碼替換它,以避免在你證明它正在工作時阻塞UI。 )
還有這裏的iphone一個JSON框架:
http://code.google.com/p/json-framework/
這對我來說工作得很好,就是簡單的用ASIHTTPRequest使用。
我加了一點點解釋。該應用程序不是基本的HTTP身份驗證。它是在您輸入您的憑證的網頁上顯示的表單。我試圖調整它,以便它可以充當RESTful API,我可以對其進行身份驗證並查詢數據(這些數據將以JSON格式返回)。 – Andrew 2010-08-18 20:03:19
好的,我已經更新了一些更詳細的答案。從本質上講,ASIHTTPRequest應該都很簡單。 – JosephH 2010-08-18 20:36:08
因此,一旦我將請求「發佈」到/ auth/login,我的iPhone應用程序是否會記住它已通過身份驗證?在瀏覽器中,有Cookie被設置。換句話說,現在我已經過「身份驗證」,我可以提出另一個要求您進行身份驗證的請求嗎? (即GET/users/all) – Andrew 2010-08-19 19:09:34