使用OkHttp的Retrofit调用REST服务时出错

时间:2014-10-02 14:51:50

标签: android web-services http-get retrofit okhttp

我正在使用Retrofit来调用REST Web API(GET请求)。

RestAdapter是:

RestAdapter restAdapter = new RestAdapter.Builder()
    .setEndpoint(strEndpoint)
    .build();

这很好用。

然而,有时候,http GET有点慢,所以我在failure(RetrofitError err)中实现的回调会返回错误,如:

10-02 16:47:15.279: I/ERROR(16413): error downloading data: failed to connect to myserver.privete.com (port 80) after 15000ms

但是,只有在使用wifi连接时才会出现此错误。

所以我决定尝试更改连接超时,使用库OkHttp添加自定义的OkClient

OkHttpClient client = new OkHttpClient();
client.setConnectTimeout(60, TimeUnit.SECONDS);
client.setReadTimeout(60, TimeUnit.SECONDS);

RestAdapter restAdapter = new RestAdapter.Builder()
    .setEndpoint(Parameters.production ? Parameters.productionEndPoint : Parameters.testEndPoint)
    .setClient(new OkClient(client))
    .build();

但这会立即生成此错误:

10-02 16:42:38.489: I/ERROR(14259): error downloading data: com.squareup.okhttp.OkHttpClient.open

我使用的版本如下所示:

Retrofit: 1.6.1 
okhttp: 2.0.0 
okhttp-urlconnection: 1.6.0

编辑:

我也尝试过使用okhttp-urlconnection 2.0.0

1 个答案:

答案 0 :(得分:1)

你可能需要okhttp-urlconnection 2.0.0。

与此无关,但对于任何未来的问题,您可以使用

获得更好的调试输出
    .setLogLevel(RestAdapter.LogLevel.FULL)