2

NSURLConnection(and )を使って大量のデータをサーバーに送りたいNSURLRequest。このために、バインドされたNSStreams のペアを作成します ( を使用CFStreamCreateBoundPair(...))。次に、入力ストリームをNSURLRequest( -setHTTPBodyStream:) に渡し、現在の実行ループで出力ストリームをスケジュールします。実行ループが続くと、データを送信するイベントを取得し、入力ストリームがこのデータをサーバーに送信します。

私の問題は、データがペアのストリーム間のバッファーに収まる場合にのみ機能することです。データが大きい場合、何らかの形で入力ストリームがイベントを取得します (「使用可能なバイト数」を想定しています) が、NSURLConnection はまだ入力ストリームを開いていません。これにより、エラー メッセージが出力され、データが送信されません。

-stream:handleEvent:入力ストリームがまだ開かれていない場合は単純に返すことで、メソッドでこれをキャッチしようとしましたが、出力ストリームはストリームの閉じられたイベントを取得します (おそらく、可能なときにデータを送信しなかったためです)。

私の質問は次のとおりです: バインドされたストリームのペアを NSURLConnection で正しく使用するには?

(これが重要な場合:私はiOSプラットフォームで開発しています)

どんな助けでも大歓迎です!

乾杯、マーカス

4

1 に答える 1

1

さて、アップロードを遅らせて開始することでこれを修正しました。これによりNSURLConnection、入力ストリームを設定する時間があった後に開始されます。

頼ること-performSelector:withObject:afterDelay:は少しハッキーなように見えるので、それは私がクリーンなソリューションと呼んでいるものではありません。

したがって、他の誰かがこれに対する解決策を持っている場合、私はまだ提案を受け付けています。

于 2010-08-19T14:17:50.997 に答える