我在我的Android項目中第一次使用框架翻新。 它處理與後端的通信。現在最奇怪的部分是在Android 4.4上,一切都像魅力一樣。在下面的每個版本。我得到一個RetrofitError類型的java.io.EOFException。所以它第一次失敗,然後當我按下重試按鈕時它就起作用了。那麼爲什麼第一次失敗呢?Retrofit僅在第一次給出EOFException
我想解決這個問題,因爲它是煩人,用戶需要點擊重試...
是否有人得到了一個解決方案?
我在我的Android項目中第一次使用框架翻新。 它處理與後端的通信。現在最奇怪的部分是在Android 4.4上,一切都像魅力一樣。在下面的每個版本。我得到一個RetrofitError類型的java.io.EOFException。所以它第一次失敗,然後當我按下重試按鈕時它就起作用了。那麼爲什麼第一次失敗呢?Retrofit僅在第一次給出EOFException
我想解決這個問題,因爲它是煩人,用戶需要點擊重試...
是否有人得到了一個解決方案?
我找到了解決方案。在Android 4.4中,它們與OkHttpclient一起工作,這就是爲什麼它在4.4而不是在較舊的Android版本上工作的原因。
爲了解決這個添加依賴於gradle這個:
compile 'com.squareup.okhttp:okhttp-tests:1.5.1'
,並創建一個新的客戶端是這樣的:
OkHttpClient client = new OkHttpClient();
添加新的客戶端向restadapter使用此:
setClient(new OkClient(client))
現在應該解決錯誤。
這個錯誤似乎是因爲之前的連接重用而發生的。您可以禁用Keepalive以避免它:
System.setProperty("http.keepAlive", "false");
我終於解決了這個問題。解決方案是使用OkClient和OkHttp。在添加這兩個庫後,我將客戶端設置爲Oktrttit
RestAdapter restAdapter = new RestAdapter.Builder()
.setErrorHandler(new ErrorRetrofitHandlerException())
.setEndpoint("Yout base URL")
.setLogLevel(RestAdapter.LogLevel.FULL)
.setClient(new OkClient(new OkHttpClient())) //Http Client
.build();
是否有任何答案適合您? – AabidMulani
兩者都在下面。 OkHttp是我的解決方案,解決了這個問題。 – user1007522
這裏同樣的問題。看看在'GitHub'上創建的[這張票](https://github.com/square/retrofit/issues/397)。 – theblang