3

我正在向 Web 服务器发送带有 POST 数据的请求。如果发生错误,Web 服务器会返回 JSON 响应,如果没有错误,则返回文件数据本身。

我想跟踪文件数据响应的进度。我的代码基于 ASIHttpRequest教程中的示例代码

ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];

[request setPostValue:someValue forKey:@"someKey"];
[request setPostValue:someOtherValue forKey:@"someOtherKey"];
[request setShowAccurateProgress:YES];
[request setDownloadProgressDelegate:aProgressView];

request.delegate = self;
[request startSynchronous];

在完成响应之前什么都不会发生,在这种情况下,进度条会完全填满。

我尝试了同步和异步请求。

我猜下载进度委托不起作用,因为我本身并没有下载文件,而只是接收到对请求的 HTTP 响应,对吧?在这种情况下,监控进展的正确方法是什么?

提前致谢...

4

1 回答 1

1

您是否在主线程中运行此代码?

如果是这样,进度不更新的原因是使用同步请求将阻塞主线程,从而阻止 UI 更新发生。

最好的解决方法是使用异步请求 - 你提到你已经尝试过了,发生了什么?

提示:

打印 http 响应并检查是否有 Content-Length。如果不是,或者它是 0,那就是问题所在。

NSLog(@"Response headers %@",[request responseHeaders]);
于 2010-10-07T07:34:35.113 回答