2

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

- (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;




}
4

2 回答 2

1

我在互联网上寻找解决方案,最终我创建了自己的 NSURLConnection 子类并分配了一个标签变量来区分。查看此博客文章以获取更多信息

于 2013-01-14T18:44:43.210 回答
0

您可以在执行它们后保留对每个不同请求的引用,然后在委托方法中编写一些条件代码,为两者做一些不同的事情。

这是一个基本的解决方案,对我来说就像是在治疗症状。也许您应该重构您的方法并为这两个操作中的每一个创建控制器并在那里执行所有网络通信(看起来您现在正在视图控制器中执行所有操作)而不是您现在正在执行的位置。

于 2011-12-06T16:18:58.750 回答