0

我有一个附加密码的网络服务 url。当我通过提供正确的密码运行应用程序时,应用程序正在运行,同时我使用错误的凭据运行应用程序。该应用程序正在运行,我不知道摆脱这个问题。我的代码在这里:

     NSString *post =[[NSString alloc] initWithFormat:@"password=%@",[password text]];
        NSLog(@"PostData: %@",post);
        NSURL *url=[NSURL URLWithString:[NSString stringWithFormat:@"http://myexample.com/Accountservice/Secure/ValidateAccess?password=abcd&type=1"]];

        NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
        NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];
        NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
        [request setURL:url];
        [request setHTTPMethod:@"POST"];
        [request setValue:postLength forHTTPHeaderField:@"Content-Length"];
        [request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
        [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
        [request setHTTPBody:postData];

        NSURLRequest *request1 = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:post] cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:10];

        NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request1 delegate:self startImmediately:YES];
        if(!connection){
            NSLog(@"connection failed");
        }
        else{
            NSLog(@"connection succeeded");
        }

如果我给了'abcd'作为密码连接成功显示。如果我给出了错误的密码连接成功显示。我该如何解决这个问题?如果我输入了错误的密码,需要显示警报。

4

2 回答 2

1

这里的控制结构就是问题所在:

if(!connection){
    NSLog(@"connection failed");
}
else {
    NSLog(@"connection succeeded");
}

这不检查坏连接,它检查连接对象是否等于 0 (nil)。显然,在上面的行中初始化它后,else 语句将始终记录下来,给您一种连接成功的错误印象。您应该成为连接的委托人,并改为响应适当的委托方法。

于 2013-03-12T05:13:14.000 回答
0

问题可能与您使用的网址有关

  1. 在浏览器中触发 url 并查看它返回的内容
  2. 尝试使用单引号添加 url 参数 accesscode='abcd'

通过这种方式传递凭据不是一个好习惯。您可以使用带有一些有效加密的 POST 方法来防止可能发生的安全问题

解决方案 试试这个

  NSString *urlString=@"http://myexample.com/Accountservice/Secure/ValidateAccess?";
    self.responseData = [NSMutableData data];
    NSString *post =[NSString stringWithFormat:@"username=%@&password=%@",userNameTextField.text,passwordTextField.text];
    NSData *postData=[post dataUsingEncoding:NSUTF8StringEncoding];
    NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];
    NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
    [request setURL:[NSURL URLWithString:urlString]];
    [request setHTTPMethod:@"POST"];
    [request setValue:postLength forHTTPHeaderField:@"Content-Length"];
    [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
    [request setHTTPBody:postData];
    NSURLConnection *connection0= [[NSURLConnection alloc] initWithRequest:request delegate:self];
    [connection0 start];
于 2013-03-12T05:15:21.770 回答