首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSURLConnection sendAsynchronousRequest -与HTTPS通信

NSURLConnection sendAsynchronousRequest -与HTTPS通信
EN

Stack Overflow用户
提问于 2012-10-14 17:36:47
回答 1查看 2.5K关注 0票数 0

我正在开发一个iPhone应用程序,它从一个URL中获取一个图像。我使用的是'NSData dataWithContentsOfUrl] &它工作得很好。但是,正如您可能已经猜到的,请求是同步的。

我希望请求是异步的。因此,我尝试使用NSURLConnection的sendAsynchronousRequest()调用。但这将返回方法'didFailWithError‘中的以下错误:

错误Domain=kCFErrorDomainCFNetwork Code=310“与安全web代理服务器(HTTPS)通信存在问题。

有人能帮忙吗?

这是我的NSURLConnection代码片段:

代码语言:javascript
复制
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];

和NSURLConnectionDelegate方法(尚未实现;只是先测试一下它是否有效).

代码语言:javascript
复制
-(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
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-16 13:04:26

我刚刚修复了这个问题;我尝试使用简单的代码行:

代码语言:javascript
复制
[[NSURLConnection alloc] initWithRequest:urlRequest delegate:self startImmediately:YES];

然后处理Delegate方法中的数据。早些时候,它试图在一个单独的线程中运行。它工作得很好&是异步的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12884753

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档