2014-10-02 78 views
0

我使用Retrofit來調用REST Web API(GET請求)。使用OkHttp進行Retrofit調用REST服務時出錯

的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 

但是,此錯誤appens只有當我用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

+0

你確定myserver.private.com是移動設備的同一網絡上? – Dimitri 2014-10-02 16:33:33

回答

1

你可能需要okhttp-urlconnection 2.0.0。

無關的這一點,但對於未來的任何問題,你可以通過使用得到更好的調試輸出

.setLogLevel(RestAdapter.LogLevel.FULL) 
+0

我也嘗試使用okhttp-urlconnection的2.0.0版本。 – GVillani82 2014-10-02 18:07:07