2012-10-14 28 views
0

我正在从iPhone获取URL中的图像。我使用'NSData dataWithContentsOfUrl] &它工作正常。 但是,正如你可能猜到的那样,请求是同步的。NSURLConnection sendAsynchronousRequest - 与HTTPS进行通信

我希望请求是异步的。所以,我尝试使用NSURLConnection的sendAsynchronousRequest()调用。但是,此方法返回的方法下面的错误“didFailWithError”:

错误域= kCFErrorDomainCFNetwork代码= 310“有与安全Web代理服务器(HTTPS)进行通信的问题

灿有人请帮助

这是我的NSURLConnection的代码片段:

NSURL *url = [NSURL URLWithString:notePicUrl]; 

      NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:100.0]; 
      //NSOperationQueue *queue = [[NSOperationQueue alloc] init]; 

      NSURLConnection* _connection = [[NSURLConnection alloc] initWithRequest:urlRequest delegate:self startImmediately:NO]; 
      self.port = [NSPort port];                          
      self.runLoop = [NSRunLoop currentRunLoop];                      
      [self.runLoop addPort:self.port forMode:NSDefaultRunLoopMode]; 
      [_connection scheduleInRunLoop:self.runLoop forMode:NSDefaultRunLoopMode]; 
      [_connection start]; 
      while (self.finished != YES) { 
       [self.runLoop runUntilDate:[NSDate dateWithTimeIntervalSinceNow: 0.1]]; 
      } 
      [self.runLoop removePort:[self port] forMode:NSDefaultRunLoopMode]; 
      [_connection unscheduleFromRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; 

而NS URLConnectionDelegate方法(尚未实现;刚测试先看看它是否工作)...

-(void)connection:(NSURLConnection*)connection didReceiveResponse:(NSURLResponse*)response 
{ 
    NSLog(@"didReceiveResponse"); 
    //_data = [[NSMutableData alloc] init]; // _data being an ivar 
} 
-(void)connection:(NSURLConnection*)connection didReceiveData:(NSData*)data 
{ 
    NSLog(@"didReceiveData"); 
    //[_data appendData:data]; 
} 
-(void)connection:(NSURLConnection*)connection didFailWithError:(NSError*)error 
{ 
    NSLog(@"didFailWithError %@", [error description]); 
    // Handle the error properly 
} 
-(void)connectionDidFinishLoading:(NSURLConnection*)connection 
{ 
    NSLog(@"connectionDidFinishLoading"); 
    //[self handleDownloadedData]; // Deal with the data 
} 
+0

有人可以帮忙吗? – Jean

回答

0

我只是解决了这个问题;我试过使用简单的代码行:

[[NSURLConnection alloc] initWithRequest:urlRequest delegate:self startImmediately:YES]; 

然后处理委托方法中的数据。此前,它试图在单独的线程中运行。这工作就好了&是异步的。

相关问题