2014-02-12 3 views
0

나는 객관적으로 C입니다. 로그인이 필요한 웹 사이트의 모바일 버전을 만들고 있습니다. 사용자 이름과 암호를 허용하는 방법을 찾고 있습니다. NSURLAuthenticationChallenge가 수신 된 후에 전달됩니다.NSURLAuthenticationChallenge 후 Objective-C 응답 기다림

Session.m

// log in 
-(BOOL)logIn 
{ 
    if (([Password class] == [NSNull class]) || ([Password length] == 0)) 
     return NO; 

    if (([Username class] == [NSNull class]) || ([Username length] == 0)) 
     return NO; 

    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:URL_CONSTANT] 
          cachePolicy:NSURLRequestUseProtocolCachePolicy 
             timeoutInterval:10.0]; 

    NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self]; 
    [connection start]; 

    if (!connection) 
    { 
     return NO; 
    } 
    return Connected; 
} 

// handle authentiaction challenge 
-(void)connection:(NSURLConnection*)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge 
{ 
    NSLog(@"received auth challenge"); 
    if ([challenge previousFailureCount] == 0) 
    { 
     NSLog(@"received auth challenge"); 
     NSURLCredential *credentials = [NSURLCredential credentialWithUser:Username 
                   password:Password 
                   persistence:NSURLCredentialPersistenceForSession]; 

     NSLog(@"credential created"); 
     [[challenge sender] useCredential:credentials forAuthenticationChallenge:challenge]; 
     NSLog(@"responded to auth challenge"); 
    } 
    else 
    { 
     Connected = NO; 
     NSLog(@"previous auth failure"); 
    } 
} 

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data 
{ 
    NSLog(@"Data received"); 
    Connected = YES; 
} 

사용자 이름과 암호가 모두의 UITextField에서 세션 개체에 전달되는 : 여기 내 코드입니다. 여기서 문제는 연결에 데이터가 도착하기 전에 NO가 반환된다는 것입니다. 자격 증명이 전달 될 때까지 기다린 후 자격 증명이 유효하면 응답을 기다리는 logIn 메서드를 어떻게 호출 할 수 있습니까?

답변

0

조언 :

  • 가능하면, iOS7에 전용 이동합니다.

  • 일단 그렇게하면 반짝이는 새 NSURLSession을 선호해야하며 이는 NSURLConnection을 대체합니다. This은 시작하기에 좋은 장소입니다.

  • 많은 또한 AFNetworking을 좋아합니다.