所以在我的应用程序中,我使用 NSURLConnection 连接到服务器并检索文本。这就是我启动 NSURLConnection 的方式:
NSMutableURLRequest * serviceRequest = [NSMutableURLRequest requestWithURL:postUrl cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:60.0];
//Some other code
[serviceRequest setValue:contentType forHTTPHeaderField:@"Content-Type"];
[serviceRequest setHTTPMethod:@"POST"];
[serviceRequest setHTTPBody:postData];
//Force to return size
[serviceRequest setValue:@"" forHTTPHeaderField:@"Accept-Encoding"];
theConnection = [[NSURLConnection alloc] initWithRequest:serviceRequest delegate:self];
现在它工作正常,但我试图在我的应用程序中获得一个进度条来表示这个请求的进度。
现在这里是我的 didReceiveResponse 和 didReceiveData 方法:
- (void) connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
dlSize = [response expectedContentLength];
NSLog(@"didReceiveResponse: %f", dlSize);
[self.receivedData setLength:0];
}
- (void) connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
[receivedData appendData:data];
dlProgress = ((float) [data length] / (float) dlSize);
NSLog(@"dlProgress: %f", dlProgress);
}
所以这就是问题所在。如您所见,我在那里有两个 NSLog,但在请求完成之前不会调用它们。具体来说,我正在联系服务器以进行 OCR 某些事情,一旦完成 OCRing 并获得文本,即调用这两种方法。然后日志返回如下内容:
2013-07-30 22:50:09.201 app[39381:907] didReceiveResponse: 514.000000
2013-07-30 22:50:09.202 app[39381:907] dlProgress: 1.000000
2013-07-30 22:54:39.651 app[39381:907] didReceiveResponse: 305.000000
2013-07-30 22:54:39.651 app[39381:907] dlProgress: 1.000000
我不确定为什么在请求期间没有调用这些方法,但也许这个网站上的某个人知道为什么?无论如何,任何提示/评论/建议都会受到赞赏,因此我可以得到一个与此挂钩的 UIProgressView。
谢谢!