首页 > 解决方案 > 如何在单例组件中向 okhttp 添加代理服务器?

问题描述

在我的匕首图中,我需要为 okhttp 提供代理。我正在使用java.net.InetSocketAddress whichjava.net.Proxy导致主线程上的网络异常。

@InstallIn(SingletonComponent::class)
@Module
class SingletonModule {
    @Provides
    fun proxyClient(): OkHttpClient {
        return OkHttpClient.Builder()
            .proxy(
                Proxy(Proxy.Type.HTTP, 
                    InetSocketAddress("192.9.09.8", 98))
            ).callTimeout(2, TimeUnit.MINUTES).build()
    }
}

暂停功能似乎不适用于刀柄。
有没有办法在 Hilt 中使用异步代码?

崩溃日志

Caused by: android.os.NetworkOnMainThreadException        
   at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1565)
   at java.net.Inet6AddressImpl.lookupHostByName(Inet6AddressImpl.java:115)
   at java.net.Inet6AddressImpl.lookupAllHostAddr(Inet6AddressImpl.java:103)
   at java.net.InetAddress.getAllByName(InetAddress.java:1152)
   at java.net.Socket.<init>(Socket.java:218)
   at com.moblie.frencheska.hilt.SingletonModule.proxyClient(SingletonModule.kt:55)

标签: androidkotlinokhttpdagger-hiltnetworkonmainthread

解决方案


推荐阅读