我正在尝试通过iPhone应用程序使用我的登录凭据访问网站,但NSLog
只显示具有登录屏幕的网站...我需要登录屏幕之后的那个。我的代码如下:
- (IBAction)buttonClicked:(id)sender
{
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:@"http://webportal.factorforms.com/Portal/Form_Login.aspx"]];
[request setPostValue:[self.usernameField text] forKey:@"Login1$UserName"];
[request setPostValue:[self.passwordField text] forKey:@"Login1$Password"];
[request setDelegate:self];
[request startAsynchronous];
}
- (void)requestFailed:(ASIHTTPRequest *)request {
NSLog(@"Request failed: %@",[request error]);
}
- (void)requestFinished:(ASIHTTPRequest *)request {
NSLog(@"Submitted form successfully");
NSLog(@"Response was:");
NSLog(@"%@",[request responseString]);
}
我的回复只是登录屏幕....我以为我会获得实际登录的javascript。我不确定我做错了什么。
答案 0 :(得分:0)
登录后可能是您的网站有多个重定向?你也必须解析它。 ASIHttp可以做到。 [只是意见。]
答案 1 :(得分:0)
我在尝试与.NET站点通信时遇到了类似的问题,并且执行以下操作对我有用:
包括提交按钮本身的帖子值,例如
[request setPostValue:@“Login”forKey:@“Login1 $ LoginButton”];
包含页面视图状态的帖子值,因为我认为这可以在某些设置中验证:
的NSString * VIEWSTATE = @ “/ wEPDwUKMjE0MjI5NDA3Ng9kFgICBA9kFgYCAQ9kFgQCAQ88KwAKAQAPFgIeCFVzZXJOYW1lZWRkAgcPFgIeB1Zpc2libGVoZAIDDxYCHwFoZAIFDxYCHgNzcmMFFkxvZ2luRnJhbWUvRkFDVE9SLmFzcHhkGAEFHl9fQ29udHJvbHNSZXF1aXJlUG9zdEJhY2tLZXlfXxYBBRdMb2dpbjEkTG9naW5JbWFnZUJ1dHRvbitnh1yDOsbCwQpF6Ic5hi0OUJ4q”;
[request setPostValue:viewState forKey:@“__ VIEWSTATE”];
包含页面事件验证的帖子值,因为我认为这可以在某些设置中验证:
NSString * eventValidation = @“/ wEWBQL9m8PyDQKUvNa1DwL666vYDAKnz4ybCAKI7MDFB3FJcnRzxnTY + gW6x83FqZF + QS + 6”;
[request setPostValue:eventValidation forKey:@“__ EVENTVALIDATION”;
从记忆中,我把所有这三个都扔到了问题上,然后我的登录成功了,但我真的应该花时间搞清楚这三个是否都是必需的。