2014-07-24 3 views
2

iOS에서 큰 문제가 있습니다. SSL 오류를 전달하기 때문에 몇 가지 이유로 비동기를 사용해야합니다. 그래서 NSURLconnection을 사용하고 didReceiveData에서 웹 서버의 응답 데이터를 가져옵니다. 그리고 서버에 URL 하나를 올리면 잘 작동합니다.iOS NSURLConnection didReceivedData 두 개 이상의 작업

하지만 제 질문은 : 서버에 2 ~ 3 개의 다른 URL을 동시에 게시해야하는 경우입니다. 그런 다음 didReceiveData에서 응답 데이터를 수신합니다. 혼란이 될 것입니다! 어떤 응답의 데이터가 어떤 포스트 작업에 속하는지 어떻게 알 수 있습니까 ?? 누구든지 나를 도울 수 있습니까? 제발 .. 고마워.

+1

각 대리자 메소드의 'NSURLConnection' 매개 변수를 사용하여 응답이 어떤 연결인지 파악합니다. – rmaddy

+0

rmaddy, 각 대리자의 NSURLConnection 매개 변수에 예제 코드를 제공 할 수 있으며 다른 didReceiveData를 작성해야합니까? – user3286613

답변

2

의 대리인 방법에서 connection을 확인해야합니다. & 두 개의 서로 다른 resposeData를 사용하십시오.

예 : 다른 연결에 대한 여기에 두 개의 연결 connSend

NSURL *url = // Your URL 
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url]; 
connSend=[[NSURLConnection alloc] initWithRequest:requestObj delegate:self]; 

를 사용 connSend & connRecieve

경우

NSURL *url = // Your URL 
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url]; 
connRecieve =[[NSURLConnection alloc] initWithRequest:requestObj delegate:self] 




- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response { 
    if (connection==connSend) { 
     responseSend = [[NSMutableData alloc]init]; 
     [responseSend setLength:0]; 
    } 
    else{ 
     responseData = [[NSMutableData alloc]init]; 
     [responseData setLength:0]; 
    } 
} 

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { 
    if (connection==connSend) { 
     [responseSend appendData:data]; 
    } 
    else{ 
     [responseData appendData:data]; 
    } 
} 

-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error { 
    if (connSend==connection) { 
     NSLog(@"Error in sending"); 
    } 
    else{ 
     NSLog(@"Error in receiving"); 
    } 
} 

- (void)connectionDidFinishLoading:(NSURLConnection *)connection{ 

    if (connection==connSend) { 
    // Connection send. 
    } 
    else{ 
    // Connection recive 
    } 

} 

그것의 더 나은 당신이 다른 서버 responce를 얻기 위해 다른 클래스를 만들 수 있습니다 ,

+0

connSend는NSURLConnection * conn = [[NSURLConnection alloc] initWithRequest : 요청 대리자 : connSend]; 대리인 : self => 위임자 : connSend right? 감사합니다 – user3286613

+0

NSURLConnection을 전역으로 만듭니다. –

+0

NSURLConnection * connSend1 = [[NSURLConnection alloc] initWithRequest : 요청 대리인 : 자체]; NSURLConnection * connSend2 = [[NSURLConnection alloc] initWithRequest : 요청 대리인 : 자기]; 맞습니까? thanks – user3286613