改造返回错误 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()

NullPointerException 使用改造库 - Android

在android中使用改造的json解析错误

在android中的适配器内进行改造调用

Android:改造不带“/”的URL路径