4

ASIHTTPRequestを使用してサーバー上のRESTサービスと通信するiPhoneアプリがあります。シミュレーターで実行しているときは問題なく動作しますが、電話自体に乗ると、奇妙な動作をします。

リクエストを開始するボタンを初めてクリックすると、すぐに結果が返され、すべて問題ありません。その時点から、ボタンをクリックして接続を開始すると、接続に約2〜3分かかります。私が最初に開始した(そして、すでに正しい結果を受け取っている)ASIHTTPRequestが完了していないようです。次のリクエストを開始する前に元のリクエストを終了するために使用する必要があるある種の魔法はありますか?-startメソッドが返されたので、サーバーから元の要求が完了し、別の要求を開始できるという結果が得られたと想定しました。

何か案は?

ありがとう

-スティーブ

4

2 に答える 2

6

Steve - あなたが説明したのは、リクエストが永続的な接続を維持しようとしている場合に発生する一般的な問題です。これを試してください:

[request setShouldAttemptPersistentConnection:NO];
于 2010-10-25T08:54:51.383 に答える
2

-startメソッドを呼び出すことは想定されていません。これは、NSOperationに属しています。ASIHTTPRequestインターフェイスは、-startSynchronousまたは-startAsynchronousのいずれかです。

ただし、非同期呼び出しを使用することを強くお勧めします。そうしないと、メインスレッド(つまり、UI)がブロックされます。

ASIHTTPRequestドキュメントから[1]

一般に、同期要求よりも非同期要求を使用する必要があります。メインスレッドからASIHTTPRequestを同期的に使用すると、アプリケーションのユーザーインターフェイスがロックされ、要求の間は使用できなくなります。同期リクエストは、UIのない​​ソフトウェア(ターミナルから実行されるスクリプトなど)、または管理している別のスレッドからリクエストを実行している場合(たとえば、独自のNSOperation内から)にのみ適しています。

[1] http://allseeing-i.com/ASIHTTPRequest/How-to-use

于 2010-01-20T01:24:25.740 に答える