2011-12-01 64 views
0

我有一个简单的登录视图,当您成功登录时,它会从服务器获取一些json并将其插入到数据库中。因此,即时通讯使用:iOS - 使用多个连接

// NSURLRequest 

- (void) connection:(NSURLConnection *)connection didReceiveData:(NSData *)data 
{ 
    // appending data 
} 

- (void) connectionDidFinishLoading:(NSURLConnection *)connection 
{ 
    // insert into db 
} 

我想要第二个连接现在下载一些文件,我怎么能利用上述方法将它传递另一个URL,然后在以不同的方式(不是JSON)的第2个的NSURLRequest处理数据相同的观点?

回答

1

那么,你需要做的第一件事就是再次将你的新NSURLConnectiondelegate设置为这个类,所以方法被调用(但你知道)。如果你在一个时间做这些中的一个,存储一个指针到活动NSURLRequest,是这样的:

@property (nonatomic, assign) NSURLRequest *activeURLRequest; 

然后检查活动请求的URL来区分请求:

- (void) connectionDidFinishLoading:(NSURLConnection *)connection 
{ 
    NSString *urlPath = [[activeURLRequest URL] path]; 
    if([urlPath isEqualToString:@"http://my.url.string/1"]) 
     // insert into DB 
    else if([urlPath isEqualToString:@"http://my.url.string/2"]) 
     // do the other thing 
} 

注意:您可以还使用isEqual:(或==运算符)将NSURL对象直接与其存储版本进行比较。

如果您一次只做一个以上,您需要另一种区分方式。我建议使用ASIHTTPRequestAFNetworking来简化操作,但如果您想使用Apple的库进行操作,那么您需要分离多个线程,记录哪个线程号处理哪个请求URL,然后使用该信息你的connectionDidFinishLoading:方法。

+0

我明白你的意思了,我会根据URL来玩这个活跃的URL想法和处理信息。我不想使用ASIHTTPRequest(这很棒),但我认为它不再被支持?即例如没有IOS5更新。干杯。 – fes

+0

我同意'ASIHTTPRequest'不再被支持,但这并不意味着它已经坏了。它对我来说仍然很有用,那里有很多精简的线程安全编码,这些编码已经在多年中得到了改进。它也是在自定义位置(我见过)中缓存磁盘上特定请求的最简单方法,它可以很好地处理HTTP重定向。 – darvids0n

+0

你对iOS5的ASIHTTPRequest有任何问题吗?我记得做了一个构建,它正在抛出我不知道的可怕警告。 – fes