[英]iOS: How to make a secure HTTPS connection to pass credentials?
我正在创建我的第一个iPad应用程序。 我有一个Web应用程序,我想要以RESTful方式进行身份验证并从中提取数据。
如果您在浏览器中打开URL( https://myapp.com/auth/login ),您将获得一个表单来输入您的用户名和密码。 我以为我可以在请求的发布数据中设置登录凭据并提交数据。
该站点使用HTTPS进行登录,因此凭据不会通过Internet以纯文本形式传递。
如何建立安全的HTTPS连接以传递凭据? 请记住我是否已登录以备将来使用? 做这个的最好方式是什么?
进一步更新,2013年10月
虽然当时我写了这个答案,ASIHTTPRequest得到了广泛的支持,但现在不再是这样了。 不建议用于新项目 - 而是直接使用NSURLConnection,或使用AFNetworking。
使用AFNetworking,有一个[httpClient setAuthorizationHeaderWithUsername:username password:password];
用于http身份验证的方法,以及创建POST样式表单同样容易 - 请参阅AFNetworking Post Request 。
原始答案:
很多人使用ASIHTTPRequest类来处理iPhone / iPad上的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一起使用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.