How to increase timeout for retrofit requests in robospice android?
android, retrofit, robospice
Solution
I stumbled in here with a similar question and eventually found the answer elsewhere. Had there been a more complete example here, I would have saved some time so I circled back to post what worked for me just in case it helps others:
Adapter with increased read timeout
// create client
OkHttpClient okHttpClient = new OkHttpClient();
okHttpClient.setReadTimeout(60 * 1000, TimeUnit.MILLISECONDS);
// create rest adapter using the client above
RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint(getBaseApiUrl())
.setClient(new OkClient(okHttpClient))
// this gson converter below is optional. We use it for parsing dates and enums
.setConverter(new GsonConverter(createApiGson()))
.setLogLevel(getRetrofitLogLevel())
.build();
NOTE: for us, `getBaseApiUrl()` returns something like: `https://some.company.com/api/` and `getRetrofitLogLevel()` returns either `RestAdapter.LogLevel.FULL` or `RestAdapter.LogLevel.NONE` depending on which flavor of the app is built.
Lastly, these are the main dependencies that make everything work:
Key dependencies
dependencies {
...
compile "com.squareup.retrofit:retrofit:1.5.0"
compile "com.squareup.retrofit:retrofit-mock:1.5.0"
compile "com.squareup.okhttp:okhttp:1.5.4"
compile "com.google.code.gson:gson:2.2.4"
...
}
Problem
I have implemented robospice in my project and using retrofit for all api calls. For some of requests, I need to increase timeout, please let me know how can I do that? Actually I am using service that extends RetrofitGsonSpiceService. The code of my service class is below: ``` public class MyService extends RetrofitGsonSpiceService { @Override public void onCreate() { super.onCreate(); addRetrofitInterface(MyInterface.class); } @Override public CacheManager createCacheManager(Application application) throws CacheCreationException { CacheManager cacheManager = new CacheManager(); ObjectPersisterFactory persistFactory = new RetrofitObjectPersisterFactory(application, getConverter(), getCacheFolder()); persistFactory.setAsyncSaveEnabled(true); cacheManager.addPersister(persistFactory); return cacheManager; } @Override protected String getServerUrl() { return Utils.getBaseUrl(); } @Override protected RestAdapter.Builder createRestAdapterBuilder() { RestAdapter.Builder builder = new RestAdapter.Builder().setRequestInterceptor( new RequestInterceptor() { @Override public void intercept(RequestFacade request) { request.addHeader(Const.HEADER_DEVICE_TYPE_KEY, Const.HEADER_DEVICE_TYPE_VALUE); } } ); builder.setEndpoint(getServerUrl()).setConverter(getConverter()); return builder; } } ```