使用ASIHTTPRequest解析iPhone的响应

时间:2011-11-03 17:37:57

标签: iphone asihttprequest credentials

我正在尝试通过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。我不确定我做错了什么。

2 个答案:

答案 0 :(得分:0)

登录后可能是您的网站有多个重定向?你也必须解析它。 ASIHttp可以做到。 [只是意见。]

答案 1 :(得分:0)

我在尝试与.NET站点通信时遇到了类似的问题,并且执行以下操作对我有用:

  1. 包括提交按钮本身的帖子值,例如

    [request setPostValue:@“Login”forKey:@“Login1 $ LoginButton”];

  2. 包含页面视图状态的帖子值,因为我认为这可以在某些设置中验证:

    的NSString * VIEWSTATE = @ “/ wEPDwUKMjE0MjI5NDA3Ng9kFgICBA9kFgYCAQ9kFgQCAQ88KwAKAQAPFgIeCFVzZXJOYW1lZWRkAgcPFgIeB1Zpc2libGVoZAIDDxYCHwFoZAIFDxYCHgNzcmMFFkxvZ2luRnJhbWUvRkFDVE9SLmFzcHhkGAEFHl9fQ29udHJvbHNSZXF1aXJlUG9zdEJhY2tLZXlfXxYBBRdMb2dpbjEkTG9naW5JbWFnZUJ1dHRvbitnh1yDOsbCwQpF6Ic5hi0OUJ4q”;

    [request setPostValue:viewState forKey:@“__ VIEWSTATE”];

  3. 包含页面事件验证的帖子值,因为我认为这可以在某些设置中验证:

    NSString * eventValidation = @“/ wEWBQL9m8PyDQKUvNa1DwL666vYDAKnz4ybCAKI7MDFB3FJcnRzxnTY + gW6x83FqZF + QS + 6”;

    [request setPostValue:eventValidation forKey:@“__ EVENTVALIDATION”;

  4. 从记忆中,我把所有这三个都扔到了问题上,然后我的登录成功了,但我真的应该花时间搞清楚这三个是否都是必需的。