Po prostu musisz to zrobić
OkHttpClient client = new OkHttpClient();
client.setConnectTimeout(15, TimeUnit.SECONDS); // connect timeout
client.setReadTimeout(15, TimeUnit.SECONDS); // socket timeout
Request request = new Request.Builder().url(url).build();
Response response = client.newCall(request).execute();
Należy pamiętać, że wartość ustawiona w setReadTimeout
jest jeden używany w setSoTimeout
na Socket
wewnętrznie w klasie OkHttp
Connection
.
niewprowadzanie żadnych czas oczekiwania na OkHttpClient
jest odpowiednikiem ustawiania wartości 0
na setConnectTimeout
lub setReadTimeout
i spowoduje brak limitu czasu w ogóle. Opis można znaleźć here.
Jak wspomniano w @marceloquinta w komentarzach setWriteTimeout
można również ustawić.
Od wersji 2.5.0 wartości odczytu/zapisu/łączenia są ustawione domyślnie na 10 sekund, jak wspomina @ChristerNordvik. Można to zobaczyć here.
Od OkHttp3 może teraz zrobić to poprzez Builder jak tak
client = new OkHttpClient.Builder()
.connectTimeout(10, TimeUnit.SECONDS)
.writeTimeout(10, TimeUnit.SECONDS)
.readTimeout(30, TimeUnit.SECONDS)
.build();
Możesz również przeglądać receptury here
Odpowiedź została wybrana opcja nie jest już ważny. Może powinieneś edytować pytanie, aby określić wersję okhttp. – Theyouthis