我想使用NSURLConnection
(和NSURLRequest
)向服务器发送大量数据。为此,我创建了一对NSStream
s绑定(使用CFStreamCreateBoundPair(...)
)。然后我将输入流传递给NSURLRequest
(-setHTTPBodyStream:
)并在当前运行循环上安排输出流。当运行循环继续时,我得到事件以发送数据,输入流将此数据发送到服务器。
我的问题是,这仅在数据适合配对流之间的缓冲区时才有效。如果数据较大,则输入流以某种方式获得事件(我假设“字节可用”),但NSURLConnection尚未打开输入流。这会导致打印错误消息并且不会发送数据。
我尝试在我的-stream:handleEvent:
方法中通过简单地返回,如果输入流尚未打开,但我的输出流得到一个流关闭事件(可能是因为我从未发送数据)。
所以我的问题是:如何正确使用带有NSURLConnection的绑定流对?
(如果这很重要:我正在iOS平台上开发)
感谢任何帮助!
干杯,马库斯
答案 0 :(得分:1)
好的,我通过延迟启动上传来解决此问题,以便在NSURLConnection
有时间设置其输入流后启动。
这不是我称之为干净的解决方案,因为依赖-performSelector:withObject:afterDelay:
看起来有点笨拙。
因此,如果其他人有解决方案,我仍然愿意接受任何建议。