android - 如何增加 robospice android 中改造请求的超时时间?

标签 android retrofit robospice

我在我的项目中实现了 robospice,并对所有 api 调用使用改造。对于某些请求,我需要增加超时时间,请告诉我该怎么做?

实际上我正在使用扩展 RetrofitGsonSpiceService 的服务。 我的服务类代码如下:

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;
    }
}

最佳答案

我在这里偶然发现了一个类似的问题,最终在别处找到了答案。如果这里有一个更完整的例子,我会节省一些时间,所以我回过头来发布对我有用的东西,以防它能帮助其他人:

增加读取超时的适配器

    // 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();

注意:对我们来说,getBaseApiUrl()返回类似:https://some.company.com/api/
getRetrofitLogLevel()返回 RestAdapter.LogLevel.FULLRestAdapter.LogLevel.NONE取决于构建的应用程序风格。

最后,这些是使一切正常工作的主要依赖项:

关键依赖

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"
    ...
}

关于android - 如何增加 robospice android 中改造请求的超时时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24669309/

相关文章:

android - 改造:@GET 命令中的多个查询参数?

android - 将改造 2 与 robospice 结合使用

php - 在 ListView 中从 php 服务器检索 mysql 数据到 android

java - 如何在listView的每一行中一一显示上传进度条?

java - 使用自定义颜色在 ImageView 上添加图像叠加

java - Android Retrofit错误需要HTTP方法注解(例如@GET、@POST等)

java - Android:基于两个微调器选择组合的操作

android - 从 onResponse Retrofit 返回变量

android - 使用 Retrofit 和 Fabric 来自 Android 应用程序的 OAuth 请求问题