使用HTTPBody输入流的NSURLRequest:Stream在打开之前发送事件

时间:2010-08-05 12:07:10

标签: iphone nsurlconnection nsstream

我想使用NSURLConnection(和NSURLRequest)向服务器发送大量数据。为此,我创建了一对NSStream s绑定(使用CFStreamCreateBoundPair(...))。然后我将输入流传递给NSURLRequest-setHTTPBodyStream:)并在当前运行循环上安排输出流。当运行循环继续时,我得到事件以发送数据,输入流将此数据发送到服务器。

我的问题是,这仅在数据适合配对流之间的缓冲区时才有效。如果数据较大,则输入流以某种方式获得事件(我假设“字节可用”),但NSURLConnection尚未打开输入流。这会导致打印错误消息并且不会发送数据。

我尝试在我的-stream:handleEvent:方法中通过简单地返回,如果输入流尚未打开,但我的输出流得到一个流关闭事件(可能是因为我从未发送数据)。

所以我的问题是:如何正确使用带有NSURLConnection的绑定流对?

(如果这很重要:我正在iOS平台上开发)

感谢任何帮助!

干杯,马库斯

1 个答案:

答案 0 :(得分:1)

好的,我通过延迟启动上传来解决此问题,以便在NSURLConnection有时间设置其输入流后启动。

这不是我称之为干净的解决方案,因为依赖-performSelector:withObject:afterDelay:看起来有点笨拙。

因此,如果其他人有解决方案,我仍然愿意接受任何建议。