2011-11-28 142 views
0

我遵循以下代码在我的应用程序中建立https连接,以便在我的iphone(iOS4)应用程序中以xml格式获取一些数据。未连接多个连接,iphone,使用http/https连接

  1. 创建使用NSURLConnection的连接
  2. 连接:didReceiveResponse:实施
  3. 连接:didReceiveData
  4. connectionDidFailWithError
  5. connectionDidFinishLoading

我提到exacly以下建立连接: http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/URLLoadingSystem/Tasks/UsingNSURLConnection.html

一切工作正常的单个连接。但是,如果我同时尝试2个(或更多)连接(每个连接都在单独的线程中),并且如果正在服务第一个连接,则第二个连接将被丢弃。

第二个连接永远不会排队。它只是被丢弃。只有第一个服务。

可能是什么问题?我的要求是同时创建多个(至少2个)连接。

另外,如果可能,请分享示例代码或链接或示例。 谢谢

+0

发布您的代码... –

回答

0

在单独的线程中运行NSURLConnection不是一项简单的任务。如果您只是在单独的线程中执行NSURLConnection,则不能处理委托方法,因为在代码实际执行之前线程已完成。


后您初始化NSURLConnection的对象,你实际上需要 把类无限循环,以确保该类仍然 在世时的委托方法被击中。

NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:urlReq delegate:self]; 

while(!finished) { 
    [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]]; 
} 

- (void) connectionDidFinishLoading:(NSURLConnection *)connection 
{ 
    finished = TRUE; 
} 

看到这篇文章 - NSURLConnection in its own thread

+0

我已经做了完全一样的。正如我所说的,它对于单一连接非常有用。但是当我进行多重连接时,我的第二个连接就会丢失 – RDX