You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dagger/MissingBinding报错:无法提供HttpLoggingInterceptor求解决

解决Dagger Hilt的[Dagger/MissingBinding] HttpLoggingInterceptor依赖问题

这个错误的核心是Dagger Hilt不知道如何创建okhttp3.logging.HttpLoggingInterceptor实例——它是OkHttp库提供的第三方类,没有自带@Inject注解的构造方法,而你的provideOkHttpClient方法声明需要这个实例作为参数,但你没在Hilt模块中提供对应的创建逻辑。

解决方案

在你的NetworkModule中添加一个带@Provides注解的方法,专门负责创建并返回HttpLoggingInterceptor实例,还可以在这里配置日志级别等参数。

修改后的完整NetworkModule代码:

@InstallIn(SingletonComponent::class)
@Module
object NetworkModule {

    @Singleton
    @Provides
    fun providesRetrofit(): Retrofit.Builder {
        return Retrofit.Builder().baseUrl(BASE_URL)
            .addConverterFactory(GsonConverterFactory.create())
    }

    // 新增:提供HttpLoggingInterceptor实例的方法
    @Singleton
    @Provides
    fun provideHttpLoggingInterceptor(): HttpLoggingInterceptor {
        val interceptor = HttpLoggingInterceptor()
        // 根据需求设置日志级别,BODY级别会打印完整的请求和响应内容
        interceptor.level = HttpLoggingInterceptor.Level.BODY
        return interceptor
    }

    @Singleton
    @Provides
    fun provideOkHttpClient(interceptor: HttpLoggingInterceptor): OkHttpClient {
        return OkHttpClient.Builder().addInterceptor(interceptor).build()
    }

    @Singleton
    @Provides
    fun providesNewsService(retrofitBuilder: Retrofit.Builder, okHttpClient: OkHttpClient): NewsService {
        return retrofitBuilder.client(okHttpClient).build().create(NewsService::class.java)
    }
}

新增的provideHttpLoggingInterceptor方法通过@Provides和@Singleton注解,告诉Hilt如何创建HttpLoggingInterceptor实例,这样当provideOkHttpClient需要依赖该实例时,Hilt就能自动完成注入。

内容的提问来源于stack exchange,提问作者Shiva Giri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 23:40:28