【问题标题】:Retrofit 1.9 with OkHttp 2.2 and interceptors使用 OkHttp 2.2 和拦截器改造 1.9
【发布时间】:2015-01-10 19:33:17
【问题描述】:

我认为这些最新版本应该是兼容的。有这条推文; https://twitter.com/JakeWharton/status/553066921675857922 和 Retrofit 1.9 的更新日志也提到了它。

但是当我尝试这个时:

        OkHttpClient httpClient = new OkHttpClient();
        httpClient.interceptors().add(new TokenExpiredInterceptor());

        mRestAdapter = new RestAdapter.Builder()
                .setEndpoint(API_ENDPOINT)
                .setClient(httpClient)
                .setLogLevel(BuildConfig.DEBUG ?
                        RestAdapter.LogLevel.FULL :
                        RestAdapter.LogLevel.NONE)
                .setRequestInterceptor(new AuthorizationInterceptor())
                .build();

还是不行。 setClient 方法抱怨客户端对象不兼容;

Error:(29, 21) error: no suitable method found for setClient(OkHttpClient)
method Builder.setClient(Client) is not applicable
(argument mismatch; OkHttpClient cannot be converted to Client)
method Builder.setClient(Provider) is not applicable
(argument mismatch; OkHttpClient cannot be converted to Provider)

我错过了什么?我还看到 OkHttpClient 没有实现 Client 接口。

我现在正在使用这种方法; https://medium.com/@nullthemall/execute-retrofit-requests-directly-on-okhttp-2-2-7e919d87b64e

我是否误解了更新日志? Maye Retrofit 1.9 可以在类路径中使用 OkHttpClient 2.2 但接口尚未适配?

【问题讨论】:

    标签: android retrofit square okhttp


    【解决方案1】:

    您将OkHttpClient 传递给接受Client 实现的RestAdapter.Builder。如果Client 实现中不使用OkHttpClient,则单独与Retrofit 无关。

    您应该将OkHttpClient 传递给实现ClientOkClient 实例

    .setClient(new OkClient(httpClient))

    OkHttpClient httpClient = new OkHttpClient();
    httpClient.interceptors().add(new TokenExpiredInterceptor());
    
    mRestAdapter = new RestAdapter.Builder()
            .setEndpoint(API_ENDPOINT)
            .setClient(new OkClient(httpClient))
            .setLogLevel(BuildConfig.DEBUG ?
                    RestAdapter.LogLevel.FULL :
                    RestAdapter.LogLevel.NONE)
            .setRequestInterceptor(new AuthorizationInterceptor())
            .build();
    

    【讨论】:

    • 谢谢!不敢相信我错过了:p
    • @UsmanAfzal 这与问题无关,您应该搜索之前是否有人有此问题或提出您自己的问题。
    猜你喜欢
    • 2015-12-16
    • 1970-01-01
    • 2015-04-16
    • 2015-03-29
    • 2019-04-24
    • 2021-11-02
    • 2015-03-23
    • 2020-09-18
    • 2019-12-28
    相关资源
    最近更新 更多