0

SimpleURLConnections の例を使用して、バインドされたストリームのペアを使用して multipart/form-data POST リクエストを実装しています。シミュレーターと iPhone 3GS/iPhone 4 でうまく動作します。

iPhone 3G (3.1.3 を実行) で試してみると、サーバーにデータが送信されません。NSURLConnection は、タイムアウトするまでハングし続けます。いくつかのテストの後、接続ごとにプロデューサーストリームに複数回書き込むときにのみ問題が発生することがわかりました。複数回書き込む必要がある場合 (つまり、複数の NSStreamEventHasSpaceAvailable イベントに応答する必要がある場合) は常に、動作が停止します。

これは同じ問題のように見えます: NSURLRequest with HTTPBody input stream: Stream sent event before being open、回避策はありますが、問題を解決するために正確に何を遅らせる必要があるのか​​ わかりません.

4

1 に答える 1

0

私は同じ問題を抱えていて、ネットワークスタックのバッファに収まる場合にのみデータが送信されるようです(これは、バッファがおそらくデバイスよりもはるかに大きいシミュレータで動作する理由を説明します).

これに対する回避策は、プロデューサー ストリームのスケジューリングを遅らせることでした。を使用しperformSelector:withObject:afterDelay:て、1 秒後に実行ループで出力ストリームをスケジュールするメソッドを呼び出しました。これにより、ストリームを開くのに十分な時間が URL 接続に残されます。

于 2011-05-12T19:59:23.263 に答える