2011-11-03 62 views
0

我試圖通過iPhone應用程序使用我的登錄憑據訪問網站,但NSLog只是顯示帶登錄屏幕的網站......我需要登錄屏幕後的那個網站。我的代碼如下:使用ASIHTTPRequest爲iPhone解析響應

- (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

不知道我的問題是否清楚。我期待的結果數據顯示在我登錄後的屏幕,但相反,我得到我的原始網址,其中包含登錄/密碼字段 – fmi

回答

0

可能是您的網站登錄後有多個重定向?你也必須解析它。 ASIHttp可以做到。 [公正的意見。]

0

我碰到類似的問題時嘗試使用.NET站點進行通信,並執行以下工作對我來說:

  1. 包括提交按鈕本身崗位價值,像

    [request setPostValue:@「Login」forKey:@「Login1 $ LoginButton」];

  2. 包括對頁面的ViewState後值,因爲我認爲這是可以在一些設置進行驗證:

    的NSString * VIEWSTATE = @ 「/ wEPDwUKMjE0MjI5NDA3Ng9kFgICBA9kFgYCAQ9kFgQCAQ88KwAKAQAPFgIeCFVzZXJOYW1lZWRkAgcPFgIeB1Zpc2libGVoZAIDDxYCHwFoZAIFDxYCHgNzcmMFFkxvZ2luRnJhbWUvRkFDVE9SLmFzcHhkGAEFHl9fQ29udHJvbHNSZXF1aXJlUG9zdEJhY2tLZXlfXxYBBRdMb2dpbjEkTG9naW5JbWFnZUJ1dHRvbitnh1yDOsbCwQpF6Ic5hi0OUJ4q」;

    [request setPostValue:viewState forKey:@「__ VIEWSTATE」];

  3. 包括頁面的事件驗證後的值,因爲我認爲這是可以在一些設置進行驗證:

    的NSString * eventValidation = @ 「/ wEWBQL9m8PyDQKUvNa1DwL666vYDAKnz4ybCAKI7MDFB3FJcnRzxnTY + gW6x83FqZF + QS + 6」;

    [request setPostValue:eventValidation forKey:@「__ EVENTVALIDATION」;

從內存中,我把所有這三個在問題,然後我登錄成功,但我真的花時間搞清楚,如果被要求全部三個。