2011-03-18 59 views
0

我想開發一個應用程序,它將使用這個Cytamobile-Vodafone web服務來登錄。ASIHTTPRequest問題

我已經使用HTTP實時頭附加和Mozilla得到這一個: %3D & HeaderLogin1%24CybeeUserName1%24txtUserName = mavris & HeaderLogin1%24CybeePassword1%24txtPassword = XXXXX & HeaderLogin1%24ibtnLogin.x = 20 & HeaderLogin1% 24ibtnLogin.y = 4 HTTP/1.1 302找到

首先我注意到,每次我嘗試登錄時,ibtnLogin.x和ibtnLogin.y都沒有相同的值。

其次我寫了這個代碼:

-(IBAction) buttonpressed { 

    NSURL *url = [NSURL URLWithString:@"https://www.cytamobile-vodafone.com/miPortal/HeaderLoginBar.aspx"]; 

    ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url]; 
    [request setPostValue:@"xxxxxx" forKey:@"txtUserName"]; 
    [request setPostValue:@"xxxxxx" forKey:@"txtPassword"]; 
    [request setPostValue:@"31" forKey:@"ibtnLogin.x"]; 
    [request setPostValue:@"7" forKey:@"ibtnLogin.y"]; 
    [request setDelegate:self]; 
    [request startAsynchronous]; 
    [self requestFinished:request]; 

} 

- (void)requestFinished:(ASIFormDataRequest *)request 
{ 
    // Use when fetching text data 

    NSString *responseString = [request responseStatusMessage]; 

    NSLog(@"Output = %@",responseString); 
} 

,我也得到:

"Output = HTTP/1.1 200 OK" instead of 302 Found or any other error 

我在做什麼錯在這裏?

回答

1

至少你的一個問題是,你的代碼不應該調用startAsynchronous方法開始異步請求[self requestFinished:request];[request startAsynchronous];

,所以它會在不同的線程執行請求,並讓你知道什麼時候完成。

當請求完成時,ASIHTTPRequest代碼將調用requestFinished:方法。它的請求失敗,它將調用requestFailed:不要調用這些方法,ASIHTTPRequest的代碼會。檢查出ASIHTTPRequest docs

這個標準的委託模式,你會在Objective-C中看到很多(here是許多關於SO的委託的問題)。