iOS NSURLConnection didReceivedData不止一个任务

时间:2014-07-24 03:38:40

标签: ios nsurlconnectiondelegate

我在iOS中遇到大问题。 出于某些原因,我必须使用异步,因为我想传递SSL错误。 因此,我使用NSURLconnection并从didReceiveData中的Web服务器获取响应数据。 当我将一个网址发布到服务器时,它的效果非常好。

但我的问题是:如果我需要在同一时间向服务器发布2或3个不同的网址! 然后我在didReceiveData中收到响应数据,我想这会很混乱! 我怎么知道哪个响应的数据属于哪个帖子任务? 有谁可以帮助我?请...谢谢。

1 个答案:

答案 0 :(得分:0)

为此,您必须在connection的委托方法中查看NSURLConnection。 &安培;使用两个不同的resposeData。

实施例: 这里有两个连接connSend& connRecieve

如果使用connSend

NSURL *url = // Your URL
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
connSend=[[NSURLConnection alloc] initWithRequest:requestObj delegate:self];

和其他连接

NSURL *url = // Your URL
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
connRecieve =[[NSURLConnection alloc] initWithRequest:requestObj delegate:self]




- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
    if (connection==connSend) {
        responseSend = [[NSMutableData alloc]init];
        [responseSend setLength:0];
    }
    else{
        responseData = [[NSMutableData alloc]init];
        [responseData setLength:0];
    }
}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
    if (connection==connSend) {
        [responseSend appendData:data];
    }
    else{
        [responseData appendData:data];
    }
}

-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
    if (connSend==connection) {
       NSLog(@"Error in sending");
    }
    else{
        NSLog(@"Error in receiving");
    }
}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection{

    if (connection==connSend) {
    // Connection send.
    }
    else{
    // Connection recive
     }

}

你可以更好地创建不同的类来获得不同的服务器响应,