我正在使用Retrofit 1.9和Gson连接到我的网络API。事情很棒,直到最近我偶然发现了一个问题。
我有一个Wifi路由器+调制解调器,当它无法连接到ISP时,会自动将http请求重定向到其登录页面。在一个这样的场景中,我尝试调试我的应用程序并开始看到Retrofit Conversion错误(Expected BEGIN_ARRAY but was STRING
错误)。经过仔细检查,我了解到由于网址重定向,Gson实际上正在尝试反序列化我的wifi路由器的整个登录页面。
无论如何我可以通过改造来检测此重定向并将错误视为网络错误而不是转换错误?
答案 0 :(得分:0)
行。我现在明白Retrofit是一个REST抽象库,所以它与HTTP重定向无关。需要在改装使用的HTTP客户端上解决该问题。我正在使用OkHttpClient,所以我不得不通过调用实例上的setFollowRedirects(false)
来禁用重定向。如果使用HttpUrlConnection,可以调用实例上的静态setFollowRedirects(false)
和setInstanceFollowRedirects(false)
。希望它可以帮助别人!