2014-01-10 3 views
0

Я пытаюсь создать асинхронный вызов, синхронный. Я знаю, что это не лучшая идея. Но мне нужен такой код для обработки Auth Challenge самоподписанного сертификата, сохраняя при этом вызов еще синхронным.NSURLConnection, создающий Asynch, вызывает синхронизацию и обрабатывает самоподписанный сертификат

Но, я не уверен, является ли это идеальным способом заставить Asycnh назвать синхронный.

-(NSData*) startConnection{ 
    NSURLConnection *conn=[[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:YES]; 

    while(!isFinished && [[NSRunLoop currentLoop] runMode: NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]]){ 
    } 


    return responseAppData; 
} 


    - (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge 
{ 
     //Code to handle Certificate 
} 


- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{ 
     [responseAppData appendData:data]; 
} 

- (void)connectionDidFinishLoading:(NSURLConnection *)connection{ 
     isFinished=YES; 
} 

Я также думал об использовании цикла while, как показано ниже, и какой из них следует использовать?

while(!isFinished){ 
    } 
+0

лучший способ заключается в использовании блок кодирования –

ответ

1

На самом деле все наоборот. Если вы хотите обрабатывать эти методы NSURLConnectionDelegate, вам необходимо использовать асинхронные вызовы, а не синхронно. В противном случае делегаты никогда не вызываются.

+0

Мой код работает Асинхронный, отвечает делегировать и из-за в то время как состояние он работает как синхронный код. – andyPaul

0
typedef void (^onDownload)(NSData *data); 

@property (nonatomic,assign) onDownload block; 


-(void) startConnectionwithBlock:(onDownload) pBlock;{ 
    self.block = [pBlock copy]; 
} 
-(void) connectionDidFinishLoading:(NSURLConnection *)connection{ 
    block(self.data); 
} 
+0

У меня есть метод работы с блоком, но мне нужен синхронный метод для обработки самоподписанного certifcate – andyPaul

+0

Я думаю, что вы можете управлять с помощью метода didReceiveAuthenticationChallenge для этого? –

 Смежные вопросы

  • Нет связанных вопросов^_^