2

私にとっては、asi http request を実行しました。しかし、ログイン ページでこのメソッドを呼び出すと、偽のログインの認証アラート ビューを設定するにはどうすればよいですか。ASI HTTP Request のメソッドは以下のとおりです。

-(void) authenticate:(NSString*) uname password:(NSString*) pwd{

NSString *format = @"%s %d";
NSLog(format, __FUNCTION__);

myAppDelegate *appDelegate = (myAppDelegate *)   [[UIApplication sharedApplication]delegate];
appDelegate.HUD.progress = 0.1f;
appDelegate.HUD.labelText =  @"Authenticating...";

NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://%@/login",appDelegate.appData.server]];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
request.shouldPresentCredentialsBeforeChallenge = YES;
[request addBasicAuthenticationHeaderWithUsername:uname andPassword:pwd];


[request setDidFailSelector:@selector(authenticationFailed:)];

request.userInfo = [NSDictionary dictionaryWithObject:@"authenticate" forKey:@"type"];

[request setDelegate:self];
[request startAsynchronous];}
4

2 に答える 2

4
- (IBAction)login_btn:(id)sender {
//    secondview *second=[[secondview alloc]initWithNibName:@"secondview" bundle:nil];
//    [self.navigationController pushViewController:second animated:YES];
//    [second release];

/*
 triangletechniqa.com/projects/funny/webservic/login.php?username=admin&password=123

 */
NSString *post =[NSString stringWithFormat:@"username=%@&password=%@",uesrname_text.text,password_text.text];

NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];

NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];


NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
[request setURL:[NSURL URLWithString:@"http://itriangletechniqa.com/projects/funny/webservic/login.php?"]];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:postData];

NSError *error;
NSURLResponse *response;
NSData *urlData=[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
NSString *str=[[NSString alloc]initWithData:urlData encoding:NSUTF8StringEncoding];
NSLog(@"%@",str);
// NSMutableArray *tempArr = [str JSONValue];
// NSLog(@"%@",tempArr);


if([str isEqualToString:@"0"])
{
    UIAlertView *unsucess=[[UIAlertView alloc]initWithTitle:@"Sorrrrry" message:@"Incurrect username and password" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
    [unsucess show];
    [unsucess release];
}

else
{
    UIAlertView *success = [[[UIAlertView alloc]initWithTitle:@"successful" message:@"angry"
                                                     delegate:self cancelButtonTitle:@"ok" otherButtonTitles:nil] autorelease];


    [success show];
            secondview *view=[[secondview alloc]initWithNibName:@"secondview" bundle:nil];
    [self.navigationController pushViewController:view animated:YES];
    [view release];
}

}
于 2012-11-27T05:57:27.667 に答える
0

よくわかりません。alertview コードを配置する適切な位置を見つけていますか?

asihttprequest を使用した経験はありますが、使用したことはありません

addBasicAuthenticationHeaderWithUsername:

方法。

代わりに、setpostvalueメソッドを使用してユーザー アカウントとパスワードを投稿します。それらが同じ方法である場合、次のように別のコールバックメソッドを追加できます

[request setDidSuccessSelector:@selector(resultProgress:)];

メソッドではresultProgress:、サーバーから結果を確認できます。

不正ログインの場合、アラートビューを表示できます。

于 2012-11-27T07:01:11.407 に答える