2012-05-07 40 views
0

我想在UIWebView内的基于Web的表单登录使用ASIHTTPRequest库完成自动登录。我想使它持久,所以用户在UIWebView中发出的以下请求使用网络库提供的凭据。使用ASIHTTPRequest在基于Web的表单登录在UIWebView内的自动登录

我尝试这样做:

- (void)viewDidLoad { 

[super viewDidLoad]; 
NSString *fullURL = @"http://myweb/loginform"; 

NSURL *url = [NSURL URLWithString:fullURL]; 
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url]; 
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url]; 
[request setUseKeychainPersistence:YES]; 
[request setUseSessionPersistence:YES]; 
[request setUseCookiePersistence:YES]; 
[request setPostValue:@"myuser" forKey:@"__ac_name"]; 
[request setPostValue:@"mypass" forKey:@"__ac_password"]; 
[request setDelegate:self]; 
[request startAsynchronous]; 

} 

- (void)requestFinished:(ASIHTTPRequest *)request { 
NSError *error = [request error]; 
if (!error) { 
    [webView loadData:[request responseData] MIMEType:@"text/html" textEncodingName:@"UTF-8" baseURL:[request url]]; } 
} 

但是当我尝试通过UIWebView的导航,凭据不保留它里面并获得身份认证的请求。

有一种方法可以在ASIHTTPRequest世界和UIWebView之间共享凭据吗?

在此先感谢。

回答

0

好的,代码是完全正确的,我在形成请求时缺少一个POST值。每个Web应用程序可能都需要自己的POST参数,不仅仅是用户名和密码。我缺少的参数是:

[request setPostValue:@"1" forKey:@"form.submitted"]; 

现在,它就像一个魅力。