我正在使用Retrofit来创建REST请求并创建相应的模型对象(使用@SerializedName批注的gson)。有一个特定的GET请求偶尔会导致ConversionException,但我无法找到原因。几乎同时发生10-20个类似的GET请求,其中有大约90%的请求会正确返回。将剩余的失败,并ConversionException:Android Retrofit GET请求ConversionException问题
retrofit.converter.ConversionException:com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:预期BEGIN_OBJECT但STRING位于第1行第1列
一旦此转换异常有发生时,任何时候我尝试再次发出请求(不杀死应用程序)时,它总是会有相同的转换异常。如果我杀了应用程序,并开始全新的,它可能会工作。
我试着在浏览器中寻找具有此转换异常的请求的json响应,但它总是看起来正确。我在“失败”的请求和成功的请求之间做了很多比较,并且json看起来完全相同。
我的问题:
1)为什么这些转换异常的发生,当据我所知,响应数据始终是正确的吗?
2)改造是否对GET请求进行任何缓存?这可以解释为什么重新请求失败的请求会继续失败,直到我终止并重新启动应用程序。
谢谢!
感谢您的回复。它看起来像我得到了对失败的请求的响应,但它不是json。随着retrofit的日志设置为FULL,而不是正常的json blob请求,我得到一堆随机字符。比较一个成功请求和一个遇到转换异常的头文件,我注意到这个不好的请求有一个额外的行:'D/Retrofit:Vary:Accept-Encoding'我不完全确定那一行是什么意思,猜猜答案可能会被压缩?有没有办法对此进行改进,并妥善处理? – scottrick