レトロフィットクライアントに何秒を設定する必要があるのかと思いまして。
レトロフィットコードスニペット:(OkHttpClientを提供しない場合):
okhttp3.Call.Factory callFactory = this.callFactory;
if (callFactory == null) {
callFactory = new OkHttpClient();
}
OkHttpコードスニペット:
connectTimeout = 10_000;
readTimeout = 10_000;
writeTimeout = 10_000;
それらは異なる値を使用しています。たとえば、 feedback 関連する場合は、使用します:
public class FeedbackConstants{
public static final int FEEDBACK_CONNECT_TIMEOUT_MS = 15000;
public static final int FEEDBACK_READ_TIMEOUT_MS = 15000;
public static final int GOOGLE_API_CLIENT_CONNECTION_TIMEOUT_S = 10;
}
彼らはVolleyを使用しており、あなたも 一見できます タイムアウトがいくつかあります。そして、はい、彼らは短く見えます。
/** The default socket timeout in milliseconds */
public static final int DEFAULT_TIMEOUT_MS = 2500;
異なるhttpクライアント では、短い妥当な短いタイムアウトであると考えるものについていくつかの手がかりを与えます。
/**
* Default 2s, deliberately short. If you need longer, you should be using
* {@link AsyncHttpClient} instead.
*/
protected int connectionTimeout = 2000;
/**
* Default 8s, reasonably short if accidentally called from the UI thread.
*/
protected int readTimeout = 8000;
ソース:
OkHttpClient defaultClient() {
OkHttpClient client = new OkHttpClient();
client.setConnectTimeout(15, TimeUnit.SECONDS);
client.setReadTimeout(15, TimeUnit.SECONDS);
client.setWriteTimeout(15, TimeUnit.SECONDS);
return client;
}
使用できます
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.connectTimeout(1, TimeUnit.MINUTES)
.readTimeout(30, TimeUnit.SECONDS)
.writeTimeout(15, TimeUnit.SECONDS)
.build();
Retrofit.Builder builder = new Retrofit.Builder()
.baseUrl("http://10.0.2.2:3000/")
.client(okHttpClient)
.addConverterFactory(GsonConverterFactory.create());
詳細については、以下を参照してください。 https://futurestud.io/tutorials/retrofit-2-customize-network-timeouts