【发布时间】:2014-11-27 14:25:55
【问题描述】:
我正在使用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 连接时才会出现此错误。
所以我决定尝试更改连接超时,添加自定义 OkClient,使用库 OkHttp
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
【问题讨论】:
-
您确定 myserver.private.com 与移动设备在同一个网络上吗?
标签: android web-services http-get retrofit okhttp