我正在使用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
答案 0 :(得分:1)
你可能需要okhttp-urlconnection 2.0.0。
与此无关,但对于任何未来的问题,您可以使用
获得更好的调试输出 .setLogLevel(RestAdapter.LogLevel.FULL)