因此,对于我的 iOS 客户端,我正在启动 POST 以通过以下方式上传大量数据(例如 30MB):
[[NSURLConnection connectionWithRequest:req delegate:self] retain];
但是,我需要处理 URL 错误的情况 - 例如,返回 404 的情况。问题是,我的didSendBodyData
委托方法被一遍又一遍地调用,就像它应该假设 URL 是正确的一样,以 32k 为单位价值的数据,直到达到 30MB 的总文件大小。我实际上是在用这种方法进行计算以显示和显示进度条,即使 URL 无效,它的外观和行为也像是在传输整个文件(我不确定幕后到底发生了什么 - 它可以'实际上没有做任何事情,URL 解析为 404!)
然后,在假定上传 20 秒后,我的didReceiveResponse
委托方法最终被调用,我可以在其中检查 NSURLResponse 并查看是否提供了 404。为什么它似乎在我能够得到任何类型的错误之前传输了整个文件?使用[NSURLConnection connectionWithRequest]
,我怎么能在它实际做任何事情之前知道这是一个 404 ?无论如何,有什么didSendBodyData
方法可以告诉,或者有什么其他方式可以比我看到的更早告诉吗?
一个更大的问题是,我让你限制上传时间,所以它会在 x 秒后停止,此时我取消连接(在didSendBodyData
方法的中间),所以这样做似乎没有办法知道任何事情网址出错了。
看起来这应该有一个非常简单的解决方案,但我没有看到它。谢谢你的帮助。