2014-10-06 2 views
0

WebService를 개발 중입니다. 그리고 NSURL로 iOS 클라이언트를 개발하고 있습니다. 비동기 요청을 서버로 보내고 데이터 (패킷 단위)를 받았습니다. 내 요청은 서버로 올바르게 보내지 만 대리자 메서드는 호출되지 않습니다.NSURLConnection Asynchrone 대리자 메서드가 호출되지 않았습니다.

@implementation WebServiceClientCom 

... 

-(void) connectionDidFinishedLoading:(NSURLConnection*) in_urlConnection 
{ 
    int i=0; 
} 

-(void) connection:(NSURLConnection*) connection didReceiveResponse:(NSURLResponse *)response 

{ 
    NSLog(@"YOUPI"); 
    int i=0; 
} 

-(void) connection:(NSURLConnection*) connection didReceiveData:(NSData *)data 

{ 
    NSLog(@"YOUPI"); 
    int i=0; 
} 

-(void) connection:(NSURLConnection*) connection didSendBodyData:(NSInteger)bytesWritten totalBytesWritten:(NSInteger)totalBytesWritten totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite; 

{ 
    NSLog(@"YOUPI"); 
    int i=0; 
} 

-(void) connection: (NSURLConnection*)connection didFailWithError: (NSError*) error 
{ 
    NSLog(@"%@", error); 
    int i=0; 
} 

-(void) sendAsynchronousRequest: (NSData*) in_dataToSend 
{ 
    _oUrlRequest.HTTPBody = in_dataToSend; 
    _oUrlConnection = [[NSURLConnection alloc] initWithRequest:_oUrlRequest delegate:self startImmediately:YES]; 
    if(!_oUrlConnection) 
     NSLog(@"Connection failed"); 
    else 
     NSLog(@"Connection succeeded"); 
} 

@end 

무엇이 문제인지 이해할 수 없습니까? 왜? 어디에? 자세한 내용은

NSURLConnection *theConnection=[[NSURLConnection alloc] initWithRequest:theRequest delegate:self]; 

using NSURLConnection

를 살펴 : 나를

+0

위임자를 설정 하시겠습니까? NSURLConnection을 생성하기위한 코드를 보여주십시오. –

+0

_oUrlConnection은 어떻게 정의됩니까? –

+0

NSURLConnectionDelegate 인터페이스를 구현한다고 선언 하시겠습니까? – ToddB

답변

0

을 :)하십시오

도움말 당신은 아마 당신이 전무 매개 변수로 전달하지 않도록하기 위해선, 대리자를 설정하는 것을 잊었다 업데이트

시도해보기 :

_oUrlConnection = [[NSURLConnection alloc] initWithRequest:_oUrlRequest delegate:self startImmediately:NO]; 
[_oUrlConnection scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes]; 
[_oUrlConnection start]; 

아마도 다른 스레드에서 실행 중일 수 있습니다.

+0

질문의 코드는 이미 완료되었음을 보여줍니다. – rmaddy

+0

위임자는 약한 참조이므로 자기 자신에 대한 강력한 참조를 가지고있는 항목이 있습니까? – gnasher729

+0

아니오 잊지 못했습니다 : _oUrlConnection = [[NSURLConnection alloc] initWithRequest : _oUrlRequest delegate : self startImmediately : YES]; 추신 : _oUrlConnection 내 클래스 WebServiceClientCom (NSURLConnection *) 형식 멤버입니다 _oUrlRequest 내 클래스 WebServiceClientCom 및 이전에 초기화 된 (NSURLRequest *) 형식 멤버입니다 내 코드는 우리가 인터넷에서 찾을 수 있지만 실행되지 않는 것처럼 보입니다 : '( – YannaY

0

WebServiceClientCom 개체에 대한 강력한 참조가없는 경우 응답을 받기 전에 개체가 튀어 나올 수 있습니다. 대신이 클래스의 인스턴스를 사용하고있는 곳을 시도해보십시오

@interface MyClass 
@property (strong) WebServiceClientCom *myCommunicator; 
/* ... */ 
@end 

@implementation MyClass 
- (void)communicate:(NSData *)data { 
    if (!self.myCommunicator) { 
    self.myCommunicator = [[WebServiceClientCom alloc] init]; 
    } 
    [self.myCommunicator sendAsynchronousRequest:data]; 
} 
@end 
+0

이안 감사하지만 그게 : @interface WebServiceClientManager – YannaY

0

좋아, Thansk 모두, 난 그냥 또 다른 문제가 생겼어요, 내 연결 [[NSURLConnection alloc] intiWithRequest:request delegate:self startImmediately:YES]

[[NSRunLoop currentRunLoop] run]을 잊어하지만 :이 종료 할 수있는 방법 루프 그래서 비동기 메서드 ??? ^^