从设置用户名和密码首选项登录

时间:2012-06-20 09:02:09

标签: ios ipad webview settings.bundle

我有一个使用webView的应用。在网站的主屏幕中,我想使用用户在应用程序的设置选项中输入的用户名和密码登录。目前我有这个代码,我在解决方案中看到了这个论坛上提出的类似问题。但它不起作用(对其他人来说也没有)。

-(IBAction)cachepressed:(id)sender{  

    NSString *baseurl=[[NSUserDefaults standardUserDefaults] stringForKey:@"url_preference"];
    NSString *username= [[NSUserDefaults standardUserDefaults] stringForKey:@"name_preference"];
    NSString *password= [[NSUserDefaults standardUserDefaults] stringForKey:@"pswrd_preference"];    
    NSString* content = [NSString stringWithFormat:@"username=%@&password=%@", username, password];
    NSData *data=[content dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
    NSString *postlength=[NSString stringWithFormat:@"%d",[data length]];
    NSString *loginpage= [baseurl stringByAppendingString:@"/index.php?title=Special:UserLogin"];
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:loginpage]];
    [request setHTTPMethod:@"POST"];
    [request setValue:postlength forHTTPHeaderField:@"Content-Length"];
    [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Length"];
    [request setHTTPBody:data]; 
    NSError *error=nil;
    NSURLResponse *response=nil;
    NSData *result=[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
    NSString *HTMLString = [[NSString alloc] initWithData:result encoding:NSUTF8StringEncoding];
    [webView loadHTMLString:HTMLString baseURL:[NSURL URLWithString:loginpage]];    

}

我不太确定以[request setValue ...]开头的两行代码。有人可以建议解决这个问题吗?这将是一个很大的帮助。感谢您的期待。

1 个答案:

答案 0 :(得分:0)

这很大程度上取决于如何在网站上进行身份验证。

根据我的问题,您发布的代码会将名为“username”和“password”的字段的值发送到index.php?title = Special:UserLogin页面使用POST。

您需要确保相应地设置所有内容。

<强> 1。您的字段在网站上的名称是否相同?

也许登录表单使用不同的字段名称,而不是用户名和密码。检查源代码并查看输入名称是否确实是“用户名”和“密码”

<强> 2。您的主持人是否允许发布来自其他来源的数据?

我曾经设置过我的所以如果它们不是来自我的服务器,那么没有POST请求可以工作,所以从iPad发布数据不会有效。 这也是你的情况吗?

第3。登录过程是通过将数据发布到该页面来完成的吗?

也许在网站上使用AJAX在不同的php页面上完成身份验证,然后你被重定向到index.php?title = Special:UserLogin,我以前见过这样的情况。

最重要的是,在网页浏览中进行登录之前,您需要确切了解网站上的登录方式。如果我错了,请纠正我,但根据你的帖子,这似乎不是这样的情况