OkHttp/Retrofit默认超时

Dan*_*ico 44 android timeout httprequest retrofit okhttp

我想知道我应该为我的改装客户设置多少秒.

  1. 我应该使用多少秒作为默认超时?
  2. OkHttp/Retrofit的默认超时是什么,我们应该使用默认值吗?

Sot*_*tti 70

  1. 没有神奇的价值,取决于你后端的期望.如果有人告诉你5s是一个很好的值,并且你在一个端点上的最大加载时间是8s,那么8s对你不起作用.作为一般值,我已经看到低于10s被认为是短的,并且在10到20之间是常见的.

  1. OkHttp 3.4.1Retrofit 2.1.0开始,OkHttp的默认值为10秒.Retrofit依赖于OkHttp默认值.

改造代码片段:(如果您不提供OkHttpClient):

  okhttp3.Call.Factory callFactory = this.callFactory;
  if (callFactory == null) {
    callFactory = new OkHttpClient();
  }
Run Code Online (Sandbox Code Playgroud)

OkHttp代码片段:

  connectTimeout = 10_000;
  readTimeout = 10_000;
  writeTimeout = 10_000;
Run Code Online (Sandbox Code Playgroud)
  1. 我可以访问的唯一Google App是Google IO应用.

他们使用不同的价值观.例如,对于相关的反馈,他们使用:

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;
Run Code Online (Sandbox Code Playgroud)

}

他们正在使用Volley,你也可以看看那里的一些超时.是的,他们看起来很短.

/** The default socket timeout in milliseconds */
    public static final int DEFAULT_TIMEOUT_MS = 2500;
Run Code Online (Sandbox Code Playgroud)

不同的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;
Run Code Online (Sandbox Code Playgroud)


Nik*_*ski 22

  1. 它不应该永远而不是太短.恕我直言,它应该在10到30秒之间.
  2. Retrofit为您提供的默认连接超时设置(如果您未明确指定http客户端)为15秒.

资源:

OkHttpClient defaultClient() {   
    OkHttpClient client = new OkHttpClient();
    client.setConnectTimeout(15, TimeUnit.SECONDS);
    client.setReadTimeout(15, TimeUnit.SECONDS);
    client.setWriteTimeout(15, TimeUnit.SECONDS);
    return client;
}
Run Code Online (Sandbox Code Playgroud)
  1. 我觉得谷歌正在使用30秒.不确定.