0

我正在尝试在 UIWebView 内基于 Web 的表单登录中使用 ASIHTTPRequest 库完成自动登录。我想让它持久化,因此用户在 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 之间共享凭据吗?

提前致谢。

4

1 回答 1

0

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

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

现在它就像一个魅力。

于 2012-05-08T08:39:46.123 回答