NSURLConnection区分2个不同的请求

时间:2011-12-06 14:42:27

标签: iphone objective-c ios nsurlconnection nsmutableurlrequest

在我的应用中,我需要下载并发布一些数据...... 首先,我需要下载一些数据,然后我需要做一个帖子请求。 我使用异步请求不冻结我的应用程序的UI ... 但是,当我调用我的方法发布一些数据时...我不关心从服务器返回的数据。 但是当我做一些帖子请求时,也会调用此方法。

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)aResponse
{
    NSLog(@"------------------------------- connectionDidReceiveResponse");
    expectedResponseLength = [NSNumber numberWithFloat:[aResponse expectedContentLength]];
    URLresponse = aResponse;
}

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



    [self.responseData appendData:data];
}

如何在不调用(自动)这两种方法(向上)(在下载信息时使用)并且不冻结用户GUI(我在发布请求时不关心数据但我是在第一种情况下需要数据)?

我的帖子请求是:

- (void)postRequestWithURLState:(NSString *)url
{
    NSString *bodyRequest = nil;
    NSURL *requestURL = [NSURL URLWithString:url];
    NSMutableURLRequest *theRequest = [[NSMutableURLRequest alloc] init];

    //NSLog(@"-------------- bodyRequest: %@", bodyRequest);



    [theRequest setURL:requestURL];
    [theRequest setTimeoutInterval:2.0];
    [theRequest setHTTPMethod:@"POST"];
    [theRequest setHTTPBody:[bodyRequest dataUsingEncoding:NSASCIIStringEncoding]];
    [self.oauthAuthentication authorizeRequest:theRequest];
    NSURLConnection *conn = [NSURLConnection connectionWithRequest:theRequest delegate:self];




    self.web = conn;




}

2 个答案:

答案 0 :(得分:1)

我正在互联网上寻找解决方案,我最终创建了自己的NSURLConnection子类并分配了一个标记变量来区分。有关详细信息,请查看此blog post

答案 1 :(得分:0)

您可以在执行后对每个不同的请求进行引用,然后在委托方法中创建一些条件代码,为两者执行不同的操作。

这是一个基本的解决方案,感觉像是在治疗症状。也许你应该重构你的方法并为这两个操作中的每个操作创建控制器并在那里执行所有的网络通信(看起来你现在在视图控制器中完成所有操作)而不是你在哪里进行它现在