2013-03-12 27 views
0

我有一个附带密码的webservices url。当我通过提供正确的密码运行应用程序时,应用程序正在运行,同时当我运行具有错误凭据的应用程序时。该应用程序正在运行,我没有一个想法,以摆脱这个问题了,我的代码是在这里不用..使用NSURL方法登录凭证问题

 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页头] initWithURL:[NSURL URLWithString:交] cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:10];

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

如果我给密码连接成功显示'abcd'。如果我给wrng密码连接成功显示。你能帮助解决这个问题吗?如果我给wrng密码需要显示警报。提前致谢。

+0

accesscode =“ABCD”和输入=“1” – iPatel 2013-03-12 05:08:49

+0

它们只是附加到安全问题该网址,因为它是网络服务的URL ... – 2013-03-12 05:12:30

+0

这里发布不做任何事情,如果你传递的价值在网址! – 2013-03-12 05:24:13

回答

0

该问题可能与您使用

  1. 火的网址在浏览器的URL,看看它returnes
  2. 尝试添加网址参数用单引号accesscode =“ABCD”

通过这种方式传递证书不是一个好习惯。 你可以使用POST方法与一些有效的加密,以防止可能发生的

SOLUTION 试试这个

NSString *[email protected]"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]; 
+0

我在发布方法时遇到问题,能否检查一次我的代码...? – 2013-03-12 05:44:36

+0

@sudheerchekuri:是的这就是我说你使用的是后期的方法,但你在那里发布?没有!!!请通过示例我提供你可以看到数据被添加为Http身体,并将获得发布 – 2013-03-12 05:46:17

+0

我将发送代码通过粘贴bin.Can你检查一次,因为它是我的迫切要求。 – 2013-03-12 05:56:05

1

这里这种控制结构的问题是:

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

这不检查连接不良,此检查连接物体是否等于0(无)。很明显,在上面的行中初始化它后,else语句会一直记录下来,给你错误的印象,说明你的连接已经成功。您应该成为连接的delegate,并对相应的委托方法进行响应。