1

接続に問題がある場合は、didFailWithError:(HTTP 400を使用)に加えてdidReceiveResponse:が呼び出されていることに気付きました。

これは私が期待していたことではなく、エラー状況の処理を難しくします。特に、didReceiveResponse:がdidFailWithError:の前、場合によってはその後に呼び出されることに気付いたためです。

これが意図された動作であるとは信じられないので、コードに何らかの問題があるのではないかと思いますが、あるとしたらどうすればよいか想像できません。

NSURLConnectionの動作がどうあるべきか、または以前にこのような動作を見たことがあるかどうかを誰かが確認できますか?

4

1 に答える 1

3

これが意図したとおりに機能していることを確認してください。-connectionDidFinishLoading:とメソッドは相互に排他的ですが、どちらか一方をへのconnection:didFailWithError:呼び出し(または多数!)で進めることができますconnection:didReceiveResponse:

結局のところ、この場合有効なHTTP応答を受信しました。たまたま、リクエストに問題があるためにリクエストを処理できなかったことを示しているだけです。(たとえば、読み込みに失敗したが応答がなかったタイムアウトとは対照的です。)

ただし、特定の接続に対して受け取るメッセージの1つ、-connectionDidFinishLoading:またはconnection:didFailWithError:常に最後のメッセージである必要があります。(多くの接続に単一のデリゲートを使用している場合、これらの呼び出しが順不同である場合は、同じ接続オブジェクトを見ていることを確認してください。)

于 2012-08-22T22:06:15.390 に答える