Apache HTTP クライアント ライブラリを使用して、Android デバイスから Rails Web サービスを呼び出すときに、次のシナリオを克服したいと考えています。
シナリオ :
クライアント (Android) : サーバー データベース (MySQL) にいくつかのレコードを挿入するために、HTTP POST 要求 (交換形式として Apache HTTP クライアント、JSON を使用) を開始します。
(SocketTimeOutException)
サーバー (Rails の Web サービス) : 要求を処理し、レコードをデータベースに正常に挿入しますが、同時にクライアント側でタイムアウトが発生します。
クライアント (Android) : タイムアウト時に、同じ HTTP POST 要求の実行を再試行し、もう一度同じレコードがデータベースに挿入され、データベースの矛盾が発生します。
誰でもこの状況を克服するのを手伝ってくれませんか。
前もって感謝します
編集:
私の現在のシナリオ:
1) ユーザーは、データを入力して送信することにより、Android アプリを使用して登録を試みます。したがって、基本的にPOSTサービスには、サーバー(RailsおよびMySql)に送信される必要なすべてのユーザーが含まれています
2) POST リクエストはサーバーによって処理され、このプロセスは基本的にデータベースにレコードを挿入し、データが挿入された USER_ID をクライアントに応答する役割を果たします。
3) ブーム!! データは MySql データベースに挿入されますが、何らかの理由でSocketTimeOutException
Android 側にあり、そのため Android 側に USER_ID がなく、ユーザーが再度登録しようとしています.... データベースの不整合と私は悲しいです:(
注 : ステップ 3) の発生は非常にまれです..しかし、サーバーがビジー状態であるか、サーバーに何らかの処理負荷がかかっている場合に頻繁に発生します..