【问题标题】:How do I set timeout for OkHttpClient? [duplicate]如何为 OkHttpClient 设置超时? [复制]
【发布时间】:2017-01-10 18:27:15
【问题描述】:

我正在使用 android 4.4.2 在物理设备上进行本机 android 项目 (Java) 测试。我的 OkHttpClient websocket 连接但 10 秒后超时,这就是我试图用来更改超时设置的方法。

OkHttpClient client = new OkHttpClient();
client.setReadTimeout(0, TimeUnit.MILLISECONDS);

但它说的是Cannot resolve method setReadTimeout(int, java.util.concurrent.TimeUnit)

这些是我的导入:

import android.util.Log;

import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import okhttp3.ResponseBody;
import okhttp3.ws.WebSocket;
import okhttp3.ws.WebSocketCall;
import okhttp3.ws.WebSocketListener;
import okio.Buffer;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.IOException;
import java.util.*;
import java.util.concurrent.TimeUnit;

在我的 gradle 文件中我有 compile 'com.squareup.okhttp3:okhttp-ws:3.4.1'

【问题讨论】:

    标签: java android okhttp3


    【解决方案1】:

    您尝试过使用 builder 吗?

    OkHttpClient client = new OkHttpClient.Builder()
        .connectTimeout(10, TimeUnit.SECONDS)
        .writeTimeout(10, TimeUnit.SECONDS)
        .readTimeout(30, TimeUnit.SECONDS)
        .build();
    

    更新

    尝试编译compile 'com.squareup.okhttp3:okhttp:3.4.1'

    【讨论】:

    • 我刚试过,同样的,Cannot resolve method ...
    • @CookieMonster 尝试更新的答案
    • 我将它添加到我的 gradle 中,同时保留了我的旧版本,它似乎没有改变任何东西。我尝试删除我的原件并保留你的,但我需要我的原件用于以后使用WebSocketCall ws = WebSocketCall.create(...的部分
    • 你确定你的 gradle 设置在线工作吗?我刚刚尝试使用您正在使用的 okhttp ws 库,我可以使用构建器访问设置超时的方法
    • @CookieMonster 检查我的第二次更新
    猜你喜欢
    • 1970-01-01
    • 2018-09-19
    • 2016-09-09
    • 2016-06-03
    • 2015-08-08
    • 2015-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多