2011-11-03 3 views
0

아이폰 앱을 통해 로그인 자격 증명을 사용하여 웹 사이트에 액세스하려고 시도하고 있지만 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

내 질문에 확실하지 않은지 확실하지 않습니다. 로그인 한 후에 결과 데이터가 화면에 표시 될 것으로 기대하지만 대신 로그인/비밀번호 입력란이있는 원래 URL이 표시됩니다. – fmi

답변

0

로그인 후에 여러 개의 리디렉션이있을 수 있습니다. 당신도 그것을 분석해야합니다. ASIHttp이 그것을 할 수 있습니다. [그냥 의견.] 나는 비슷한 문제로 실행했습니다

0

.NET 사이트와 통신을 시도하고 나를 위해 일한 다음을 수행 :

  1. 를 제출 버튼 자체에 대한 포스트 값을 포함, 같은

    [요청 setPostValue : @ "로그인"forKey : "Login1을 $ LoginButton"@] 나는이 몇 가지 설정에서 유효성을 검사 할 수 있다고 생각하기 때문에 페이지의 viewstate가에 대한 포스트 값을 포함

  2. :

    있는 NSString * viewstate가 = @ "/ wEPDwUKMjE0MjI5NDA3Ng9kFgICBA9kFgYCAQ9kFgQCAQ88KwAKAQAPFgIeCFVzZXJOYW1lZWRkAgcPFgIeB1Zpc2libGVoZAIDDxYCHwFoZAIFDxYCHgNzcmMFFkxvZ2luRnJhbWUvRkFDVE9SLmFzcHhkGAEFHl9fQ29udHJvbHNSZXF1aXJlUG9zdEJhY2tLZXlfXxYBBRdMb2dpbjEkTG9naW5JbWFnZUJ1dHRvbitnh1yDOsbCwQpF6Ic5hi0OUJ4q";

    [요청 setPostValue : viewstate가 forKey @ "__ viewstate가"]; 나는이 일부 설정의 유효성을 검사 할 수 있다고 생각하기 때문에

  3. 이 페이지의 이벤트 유효성 검사를위한 포스트 값을 포함 :

    있는 NSString * eventValidation = @ "/ wEWBQL9m8PyDQKUvNa1DwL666vYDAKnz4ybCAKI7MDFB3FJcnRzxnTY + gW6x83FqZF + QS + 6";

    [요청 setPostValue : eventValidation forKey @ "__ EVENTVALIDATION";

메모리에서이 문제를 모두 해결하여 로그인에 성공했지만, 세 가지가 모두 필요한지 알아 내야했습니다.