改造返回错误 307,在 android 中调用 web 服务
Posted
技术标签:
【中文标题】改造返回错误 307,在 android 中调用 web 服务【英文标题】:Retrofit returns error 307, calling web service in android 【发布时间】:2015-01-27 06:51:47 【问题描述】:我有一个奇怪的问题。我创建了一个使用Retrofit library 调用Web 服务的android 应用程序。我已经在许多设备和 Android 版本上广泛测试了该应用程序。 除了一个:Acer Iconia Tab A500 与 Android 4.0.3(API 级别:15)外,所有工作正常。对于这个,每次调用 web 服务时,retrofit 都会返回以下错误:
11-28 16:08:59.700: W/System.err(4436): retrofit.RetrofitError: 307 Temporary Redirect
我确定我的代码是正确的,但我不知道问题出在哪里。有什么建议吗?
【问题讨论】:
【参考方案1】:可能是您的新手机无法访问互联网和/或服务器。当我收到错误消息时,这就是我的手机出了问题。
希望这会有所帮助!
【讨论】:
【参考方案2】:尝试让您的应用程序遵循重定向。这是怎么做的
OkHttp
:
public static void setFollowRedirects (boolean auto)
public OkHttpClient setFollowProtocolRedirects(boolean followProtocolRedirects)
HttpURLConnection
:
public static void setFollowRedirects (boolean auto)
public void setInstanceFollowRedirects (boolean followRedirects)
见讨论here。
【讨论】:
可以告诉我在 OkHttp 中设置的位置和内容【参考方案3】:我也遇到了同样的问题,当我点击基本链接时,服务器重定向到其他链接,我通过获取重定向服务器链接解决了这个问题,然后点击该 URL 以访问所有其他 Web API。
获取重定向链接:
String redirectUrl=responseHeaders.get("location");
注意:在 volley 中,我们可以使用重试策略,因为我们得到这个 307 代码并且可以在位置(重定向 url)上重试。
如果有人对此问题有任何其他最佳解决方案,请告诉我..
【讨论】:
以上是关于改造返回错误 307,在 android 中调用 web 服务的主要内容,如果未能解决你的问题,请参考以下文章
Android 改造读取 ErrorBody.String()