跟踪对ASIFormDataRequest的响应的下载进度

时间:2010-10-05 21:23:32

标签: iphone cocoa cocoa-touch asihttprequest

我正在向网络服务器发送带有POST数据的请求。如果出现错误,Web服务器将返回JSON响应,如果没有错误,则返回文件数据。

我想跟踪文件数据响应的进度。我的代码基于ASIHttpRequest Tutorial

的示例代码
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响应,对吧?在这种情况下监控进度的正确方法是什么?

提前致谢...

1 个答案:

答案 0 :(得分:1)

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

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

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

提示

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

NSLog(@"Response headers %@",[request responseHeaders]);