android - retrofit2.adapter.rxjava2.httpexception http 403 禁止为什么这个错误发生在 kotlin android
问题描述
我无法连接到服务器,无法从服务器发送或接收数据,这个错误困扰了我很长时间。
这是我的kotlin项目中出现错误的图片
我的改造代码是
package com.epaysave.network
import com.epaysave.BuildConfig
import com.google.gson.Gson
import com.google.gson.GsonBuilder
import retrofit2.Retrofit
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory
import retrofit2.converter.gson.GsonConverterFactory
open class BaseRetrofit : BaseOKHttp() {
private fun gsonBuilder(): Gson {
return GsonBuilder()
.setLenient()
.create()
}
fun buildRetrofit(): Retrofit {
return Retrofit.Builder()
.client(provideOKHttpClient())
.addConverterFactory(GsonConverterFactory.create(gsonBuilder()))
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.baseUrl(BuildConfig.base_url)
.build()
}
}
然后我的HTTP代码是
package com.epaysave.network
import com.epaysave.BuildConfig
import okhttp3.*
import okhttp3.logging.HttpLoggingInterceptor
import java.io.IOException
import java.util.concurrent.TimeUnit
open class BaseOKHttp {
companion object {
const val NETWORK_CONNECTION_TIMEOUT = 1L
const val NETWORK_READ_TIMEOUT = 30L
const val NETWORK_WRITE_TIMEOUT = 15L
}
fun provideOKHttpClient(): OkHttpClient {
val okHttpClient = OkHttpClient.Builder()
okHttpClient
.connectTimeout(NETWORK_CONNECTION_TIMEOUT, TimeUnit.MINUTES)
.readTimeout(NETWORK_READ_TIMEOUT, TimeUnit.SECONDS)
.writeTimeout(NETWORK_WRITE_TIMEOUT, TimeUnit.SECONDS)
if (BuildConfig.DEBUG)
okHttpClient.addInterceptor(provideHttpLoggingInterceptor())
okHttpClient.addInterceptor(BasicAuthInterceptor(
"superadmin@epaysave.com", "supadm_12345")).build();
return okHttpClient.build()
}
fun provideHeaderInterceptor(headers: HashMap<String, String>): Interceptor {
return Interceptor { chain ->
val request = chain.request()?.newBuilder()
headers.forEach {
request?.addHeader(it.key, it.value)
}
chain.proceed(request!!.build())
}
}
private fun provideHttpLoggingInterceptor(): HttpLoggingInterceptor {
val logging = HttpLoggingInterceptor()
logging.level = HttpLoggingInterceptor.Level.BODY
return logging
}
}
internal class BasicAuthInterceptor(userName: String, password: String) : Interceptor {
private val credentials: String = Credentials.basic(userName, password)
@Throws(IOException::class)
override fun intercept(chain: Interceptor.Chain): Response {
val request = chain.request()
val authenticateRequest = request.newBuilder().addHeader("Content-Type", "application/json; charset=utf-8")
.addHeader("Accept", "application/json").addHeader("Authorization", credentials).build()
return chain.proceed(authenticateRequest)
}
}
我在清除 android 中的 retrofit2 和 OKHTTP3 中的 kotlin 应用程序时遇到问题。如何正确执行?
解决方案
推荐阅读
- dart - 颤动中的ListView
- sql-server - SQL Server 复杂的 CASE 语句(先检查某个字段的值,然后选择 CASE stmt used)
- android - 官方 WhatsApp 贴纸示例应用程序中的错误
- bash - Bash - 具有变量范围的 for 循环
- c# - 当与图像站点的连接不是私有时,如何加载图片框图像?
- javascript - 具有动态内容的 html 中的树结构
- python - 如何在txt文件中搜索和存储文本的特定部分
- xml - QDomDocument:带有 XML 标记的 setContent 错误
- javascript - 在没有 iframe 的情况下撰写来自不同站点的两个页面
- firebase - firebase 执行 simultaneos 操作