0

我在 iOS 上使用 ASIHttpRequest 来上传文件。在某些情况下,用户无法上传文件(因为某些条件不满足),因此我的服务器需要返回带有自定义标头的错误(400 状态代码)。当它发生时,ASIHttpRequest 失败但没有状态代码和响应头......

但它仅适用于大数据(超过 1M)。对于较小的数据,它的工作。我已经深入研究了源代码,发现当服务器在发送所有数据之前返回 400 时,CFNetwork 返回一个kCFStreamEventErrorOccurred并且从这里开始,除了读取流中的错误之外,无法读取其他内容。但是,如果在发送所有数据后请求失败,它会发送一个kCFStreamEventEndEncountered并从这里读取状态代码和响应阅读器。

由于 ASIHttpRequest 已停产,我想自己修复它,但我还没有找到解决方法。我担心这是 CFNetwork 的限制......我在互联网或文档上没有找到任何相关信息......

有谁知道如何处理?或者对 CFNetwork 有足够的了解可以给我一些线索?

谢谢 !

4

1 回答 1

0

好的,我找到了答案。

我已经在服务器端修复了它。如果它返回一个带有正文的错误(甚至只有一个字符),它在 iOS 端工作,CFNetwork 能够读取状态代码和标题。

我在服务器上使用 Tomcat 和 Spring,当您只在响应中设置状态代码时,这可能是一个错误。也许它没有正确关闭响应流,我不知道。

顺便说一句,CFNetwork 似乎非常明智......因为它与 NSUrlRequest 没有任何正文一起工作。

于 2013-03-07T09:57:38.267 回答