进一步的更新,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