由于我是iPhone新手,我想做类似的事情:在我的应用程序的主屏幕中,我要求输入用户名和密码,并使用这些信息调用.net web服务授权用户。在这个主屏幕中,有一个开关控制器“记住我”,这样应用程序将在下次运行应用程序时记住用户。我的问题是: 1.我如何在iPhone中调用.net网络服务? 2.我如何能够持久保存这些用户名和密码信息(如网络应用中的cookie),这样就不会要求用户提供凭证信息? 我真的很感激,谢谢。
答案 0 :(得分:2)
保留用户凭据
如果您要存储用户名和密码,则应使用钥匙串。在iPhone上使用Keychain类似于Mac上的Keychain。
使用Keychain导入“Security / Security.h”。
Apple在其文档中添加并检索用户名和密码的示例here。示例方法
- (void)mySetObject:(id)inObject forKey:(id)key;
- (id)myObjectForKey:(id)key;
- (void)resetKeychainItem;
将使您能够持久保存并检索用户凭据,而无需修改示例代码。
调用需要身份验证的网络服务
根据您的身份验证方案,您可以
NSURLConnection
didReceiveAuthenticationChallenge
代理中提供 NSURLConnection
方法答案 1 :(得分:1)
以下是第一个例子:
-(void)sendUpdate {
User *user = [User sharedManager];
NSData *parkedLocation = [[NSString stringWithFormat:@"<location><latitude>%f</latitude><longitude>%f</longitude><userid>%@</userid><udid>%@</udid></location>",
coordinate.latitude, coordinate.longitude, userid, user.udid] dataUsingEncoding:NSASCIIStringEncoding];
//NSLog("parkedlocation = %@", parkedLocation);
NSString *URLstr = LOCATIONS_URL;
if (controller.put_url)
URLstr = controller.put_url;
NSURL *theURL = [NSURL URLWithString:URLstr];
//NSURLRequest *theRequest = [NSURLRequest requestWithURL:theURL cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10.0];
NSLog(@"IN SEND UPDATE put_url = %@", controller.put_url);
NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:theURL cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10.0];
if (controller.put_url) {
[theRequest setHTTPMethod:@"PUT"];
} else {
[theRequest setHTTPMethod:@"POST"];
}
[theRequest setValue:@"text/xml" forHTTPHeaderField:@"Content-type"];
[theRequest setHTTPBody:parkedLocation];
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:TRUE];
NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self];
if (!theConnection) {
NSLog(@"COuldn't get a connection to the iParkNow! server");
}
}
和第二个例子:
[[NSUserDefaults standardUserDefaults] setObject:self.userName.text forKey:@"Username"];
[[NSUserDefaults standardUserDefaults] setObject:self.password.text forKey:@"Password"];
答案 2 :(得分:0)
您有两种选择:用户首选项或核心数据。两者都有能力 - 核心数据可能过度。
答案 3 :(得分:0)
NSURLRequest可用于检索您的身份验证服务等网址。 NsUserDefaults可用于在应用调用之间保存设置。
注意:查看ennuikiller的精彩示例。