我正在使用 Retrofit 发出 REST 请求并创建相应的模型对象(使用 gson 使用 @SerializedName 注释)。不过,有一个特殊的 GET 请求偶尔会导致 ConversionException,我无法追踪原因。我将几乎同时使用不同的参数发出 10-20 个类似的 GET 请求,其中大约 90% 的请求正确返回。其余的失败并出现 ConversionException:
retrofit.converter.ConversionException: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: 预期 BEGIN_OBJECT 但在第 1 行第 1 列是 STRING
一旦发生此转换异常,每当我尝试再次发出该请求(不终止应用程序)时,它将始终具有相同的转换异常。如果我杀死该应用程序并重新开始,它可能会起作用。
我尝试在浏览器中查看具有此转换异常的请求的 json 响应,但它看起来总是正确的。我在“失败”请求和成功请求之间做了很多比较,json 看起来是一样的。
我的问题:
1)为什么会发生这些转换异常,据我所知,响应数据总是正确的?
2) 改造是否对 GET 请求进行任何类型的缓存?这可以解释为什么重新请求失败的请求会继续失败,直到我终止并重新启动应用程序。
谢谢!