私はRoboSpiceをOkHttpClientモジュール(OkHttpSpiceService)で長時間のリクエストに使用します。そのためにはhttpクライアントのタイムアウトを増やす必要がありますので、120秒で設定してください。RoboSpiceサービスのloadDataFromNetwork()を呼び出す時間を増やす
@Override
protected OkHttpClient createOkHttpClient() {
OkHttpClient okHttpClient = super.createOkHttpClient();
okHttpClient.setConnectTimeout(120, TimeUnit.SECONDS);
okHttpClient.setReadTimeout(120, TimeUnit.SECONDS);
okHttpClient.setWriteTimeout(120, TimeUnit.SECONDS);
return okHttpClient;
}
私はこのSpiceServiceが
loadDataFromNetwork()
30秒ごとに(3回)、応答が来ていないか、この短い時間で到達できないされたときに起動した後
getSpiceManager().execute(spiceRequest, this);
でSpiceRequestを呼び出すので、私は、キャッシングのオプションを使用しないでください
。
呼び出す時間を増やすか変更するのは、いずれのポビビットですか?loadDataFromNetwork()
?私は1分後に反応が出ることを知っていますが、この方法を使って私は適切な応答に達することができません。デフォルトRoboSpiceことで
OKこの値を試してみます。 RetryPolicyのカスタム値を実装してRetryPolicyの値を変更しましたが、常に1つ以上のリクエストを行いました。遅延フラグを設定した後は、常に同じ結果が得られます。 30秒後に要求がタイムアウトし、120秒後に次の要求が送信されたようです(120Lにフラグが設定されている場合) –
サーバー側で30秒のタイムアウトが発生したようです。私は最初のケースでは30秒のネットワーク+ Robospiceのデフォルトの再試行タイムアウトの2.5秒だったと思う。 2番目のケースでは、30秒のネットワーク+ 120秒のRoboSpiceの再試行タイムアウトが必要です。 Wiresharkを使用して、実際にネットワーキングで起こっていることを確認してください。タイムアウトが頻繁に起こることは疑わしい。 – mykolaj
数日後、私はこの問題に戻り、いくつかの発言があります。まず、あなたのアプローチは100%ではなく問題を解決します。それは要求の時間を増加させますが、遅延の形になります。私は使用しているサーバーが10秒後にタイムアウトを送信した後、このロススピスの待ち時間がCustomRetryPolicyに設定されていることを確認します。それは今でもOKです。なぜなら、サーバーが私の要求をキャッシュしていて、応答が準備ができていれば、次の要求で私を送ります。 –