最后,我已经找到了根本原因。
我试图在新计算机上运行我的项目,但是我得到了一个新的异常,可以清楚地了解发生了什么。
新的例外是
java.lang.IllegalStateException: Expected a string but was BEGIN_ARRAY at line 1 column 2601 path
所以,我只是正确地修复了模型类(将字符串数据类型设置为列表) 一切正常。
我不确定为什么异常细节是两台计算机之间的差异。
在第一台计算机上尝试时,通常可以像使用portfolio/getPortFolio?idCard=1234567890&customerGroup=I
一样使用@Paht和Full url这两种方法
但是在新计算机中,所有方法都具有相同的例外。
我正在尝试使用Retrofit来通过多个URL参数发出@Get请求。 因此,我从@Path更改为@Query,但没有任何反应
我有这个例外
"java.lang.UnsupportedOperationException: JsonObject"
当我使用
@GET("portfolio/getPortFolio?idCard=1234567890&customerGroup=I")
fun getPortfolio()
: Call<PortfolioResponse>
}
@GET("portfolio/getPortFolio/{idCard}")
fun getPortfolio(@Path("idCard") idCard : String)
: Call<PortfolioResponse>
}
我通常都可以得到PortfolioResponse
但是,如果我将URL参数与@Query一起使用,则会出现异常:(
@GET("portfolio/getPortFolio")
fun getPortfolio(
@Query("idCard") idCard: String,
@Query("customerGroup") customerGroup: String
)
: Call<PortfolioResponse>
我的依赖 // retrofit&okhttp
用法
ApiHelper.create().getPortfolio(currentID, customerGroup)
.enqueue(object : Callback<PortfolioResponse> {
override fun onFailure(call: Call<PortfolioResponse>, t: Throwable) {
Logger.e("babore", t.localizedMessage)
}
override fun onResponse(
call: Call<PortfolioResponse>,
response: Response<PortfolioResponse>
) {
viewModel.portfolioLiveData.value = response.body()
}
})
fun create(): AppServices {
val gson = GsonBuilder()
.registerTypeAdapter(String::class.java, StringDeserializer())
.create()
val retrofit = Retrofit.Builder()
.addConverterFactory(
GsonConverterFactory.create(gson)
)
.baseUrl(BuildConfig.ENDPOINT_URL)
.client(setupOkhttpInterceptor())
.build()
return retrofit.create(AppServices::class.java)
}