Ich möchte die Lese-Timeout auf OkHttp Client mit Retrofit für einen API-Anruf ändern. Um es klar zu sagen, ich habe einen Endpunkt, der sehr lange dauern kann, ich muss sein Timeout und nur die Zeitüberschreitung für diesen einen API-Anruf erhöhen. Kann ich das durch Anmerkungen machen? Gibt es eine Möglichkeit, dies zu tun, ohne die Timeouts für den Rest der App zu ändern?Retrofit Änderung lesen Timeout für einen API-Aufruf
2
A
Antwort
0
können Sie tun eigentlich eine pro Rufkonfiguration
Kopieren Sie die Standard-Builder und machen einen anderen Client
private final OkHttpClient client = new OkHttpClient();
public void run() throws Exception {
Request request = new Request.Builder()
.url("http://blah_blah_api.com/") // This URL is served with a 1 second delay.
.build();
try {
// Copy to customize OkHttp for this request.
OkHttpClient copy = client.newBuilder()
.readTimeout(500, TimeUnit.MILLISECONDS)
.build();
Response response = copy.newCall(request).execute();
System.out.println("Response 1 succeeded: " + response);
} catch (IOException e) {
System.out.println("Response 1 failed: " + e);
}
try {
// Copy to customize OkHttp for this request.
OkHttpClient copy = client.newBuilder()
.readTimeout(3000, TimeUnit.MILLISECONDS)
.build();
Response response = copy.newCall(request).execute();
System.out.println("Response 2 succeeded: " + response);
} catch (IOException e) {
System.out.println("Response 2 failed: " + e);
}
}
2
ich eine ähnliche Situation. Ich löse mein Problem mit zwei Api-Instanzen in meinem ApiModule
, jeder mit Ihrem eigenen OkHttpClient
. Verwenden Sie @Named
, um jedes zu identifizieren.
Ich versuchte zu vermeiden, zwei Instanzen nur für eine Timeout-Konfiguration bereitzustellen, scheint ein wenig seltsam für mich, aber da meine API-Instanz ein Singleton (für die Leistung) ist, konnte ich keine andere Lösung sehen.
Verwandte Themen
- 1. Wie Timeout in Retrofit-2.0 + Android
- 2. FILE * Lesen mit Timeout
- 3. Wie Timeout in Retrofit-Bibliothek festlegen?
- 4. PyVisa lesen Timeout
- 5. mod_fcgid: Daten lesen Timeout
- 6. Retrofit Änderung mehrteiliger Einträge Content-Type
- 7. JSON mit Retrofit lesen - Android?
- 8. asio :: lesen mit Timeout
- 9. Timeout für bestimmten Anruf einstellen
- 10. Lesen Dateizugriff/Änderung Zeitstempel
- 11. Retrofit wirft einen Fehler
- 12. Retrofit + Dolch + Timeouts
- 13. Lesen von Strings mit Retrofit HTTP-Client
- 14. Einfaches Timeout für einen CFWriteStreamWrite/CFReadStreamWriter?
- 15. RabbitMQ Timeout :: Fehler: IO-Timeout beim Lesen 7 Byte
- 16. Individuelle Converter für Retrofit
- 17. Lesen von einem Kanal oder Timeout?
- 18. Linux Serial Port: Blockieren mit Timeout lesen
- 19. Behandlung Solr lesen und schreiben Timeout Ausnahme
- 20. Datei mit Timeout in Python lesen
- 21. POSTen einen Fileinputstream mit Retrofit 1.9.x
- 22. Timeout für OracleDataReader.Read-Methode
- 23. Gibt es einen allgemeinen Mechanismus für Timeout-Ereignisse in node.js?
- 24. AngularJS - Fire $ Timeout-Ereignis bei ng-Änderung nur einmal
- 25. Timeout für AndroidJUnitRunner + ActivityInstrumentationTestCase2?
- 26. Timeout für thread.join()
- 27. Android DuplicateFileException Fehler für Retrofit erhalten und Retrofit-Adapter
- 28. request.GetResponse gibt immer einen Timeout
- 29. Timeout für WaitGroup.Wait()
- 30. Timeout für Python-Coroutinen
Ich benutze Retrofit mit Dagger-2, eine Möglichkeit, dies zu lösen, ohne benannte Variablen für OkHttp zu erstellen? – Ali
Ich habe nicht am Dolch gearbeitet. Ich bin mir bewusst, dass dies ein Tool zur Abhängigkeitsinjektion ist. Wie wäre es mit dem Erstellen einer Hilfsklasse und dem Übergeben der Klassenvariablen an Ihre Aktivität als Abhängigkeit? Entschuldigung, wenn ich irreführe. –