したがって、私のiOSクライアントの場合、POSTを開始して、データの大きなチャンク(たとえば、30MB)を次の方法でアップロードします。
[[NSURLConnection connectionWithRequest:req delegate:self] retain];
ただし、URLが不正な場合(たとえば、404を返す場合)を処理する必要があります。問題は、didSendBodyData
URLが正しいと想定するのと同じように、デリゲートメソッドが32kのチャンクで何度も呼び出されることです。合計ファイルサイズが30MBに達するまで、データに相当します。私は実際にこのメソッドでプログレスバーを表示および表示するための計算を行っています。無効なURLを使用しても、ファイル全体を転送しているように見え、動作します(実際に何が起こっているのかわかりません。実際には何もしていません。URLは404に解決されます!)
次に、想定されるアップロードの20秒後、didReceiveResponse
最終的にデリゲートメソッドが呼び出され、NSURLResponseをチェックして、404が提供されたことを確認できます。なんらかのエラーが発生する前にファイル全体が転送されるように見えるのはなぜですか?を使用して[NSURLConnection connectionWithRequest]
、実際に何かを実行する前に、これが404であったことをどのように知ることができますか?とにかくメソッドで伝えるdidSendBodyData
方法、または私が見ているものよりも早く伝える他の方法はありますか?
さらに大きな問題は、アップロード時間を制限することで、x秒後に停止し、その時点で接続をキャンセルします(didSendBodyData
メソッドの途中で)。そのため、何も知る方法がないようです。 URLが間違っていました。
これは途方もなく簡単な解決策があるはずですが、私はそれを見ていません。助けてくれてありがとう。