进一步更新,2013 年 10 月
虽然在我写这个答案的时候,ASIHTTPRequest 得到了广泛的支持,但现在已经不是这样了。不建议在新项目中使用 - 直接使用 NSURLConnection,或者使用 AFNetworking。
使用 AFNetworking,有一个用于 http 身份验证的 [httpClient setAuthorizationHeaderWithUsername:username password:password]; 方法,创建 POST 样式的表单同样容易 - 请参阅 AFNetworking Post Request。
原答案:
很多人在 iPhone/iPad 上使用 ASIHTTPRequest 类来处理 http 和 https,因为它有很多有用的功能,而使用内置类很难或耗时:
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 一起使用。