OkHttp如何监听超时?

时间:2016-10-05 04:04:23

标签: android okhttp

我有这个:

    final OkHttpClient client = new OkHttpClient();

    Request request = new Request.Builder()
            .url(someUrl)
            .build();

    Response response = client.newCall(request).execute();

我看过https://github.com/square/okhttp/wiki/Recipes#timeouts

我尝试添加:

    .connectTimeout(10, TimeUnit.SECONDS)
    .writeTimeout(10, TimeUnit.SECONDS)
    .readTimeout(30, TimeUnit.SECONDS)

OkHttpClient构建器,但即使我将超时数设置为1秒,我也没有注意到任何差异。

有没有办法监听超时?如果超过超时值,我应该发生什么?

2 个答案:

答案 0 :(得分:1)

如果请求超时,则会因IOException而失败。当您致电def get_values(key): return { 1: (0, 8), 2: (7, 15), 3: (14, 22), 4: (21, 29) 5: (0, 32), }[key] try: dayf, dayt = get_values(5) except KeyError: pass 或阅读回复正文时,就会发生这种情况。

答案 1 :(得分:0)

之前我也遇到过这个问题。我使用异步请求的onFailure()回调来解决问题。如果异步适合你试试。

https://github.com/square/okhttp/wiki/Recipes#asynchronous-get https://github.com/square/okhttp/blob/okhttp_25/okhttp/src/main/java/com/squareup/okhttp/Callback.java#L20-#L26