我有一个使用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 ...]开头的两行代码。有人可以建议解决这个问题吗?这将是一个很大的帮助。感谢您的期待。
答案 0 :(得分:0)
这很大程度上取决于如何在网站上进行身份验证。
根据我的问题,您发布的代码会将名为“username”和“password”的字段的值发送到index.php?title = Special:UserLogin页面使用POST。
您需要确保相应地设置所有内容。
<强> 1。您的字段在网站上的名称是否相同?
也许登录表单使用不同的字段名称,而不是用户名和密码。检查源代码并查看输入名称是否确实是“用户名”和“密码”
<强> 2。您的主持人是否允许发布来自其他来源的数据?
我曾经设置过我的所以如果它们不是来自我的服务器,那么没有POST请求可以工作,所以从iPad发布数据不会有效。 这也是你的情况吗?
第3。登录过程是通过将数据发布到该页面来完成的吗?
也许在网站上使用AJAX在不同的php页面上完成身份验证,然后你被重定向到index.php?title = Special:UserLogin,我以前见过这样的情况。
最重要的是,在网页浏览中进行登录之前,您需要确切了解网站上的登录方式。如果我错了,请纠正我,但根据你的帖子,这似乎不是这样的情况