【问题标题】:Unexpected Response Code 302 for Volley Image RequestVolley 图像请求的意外响应代码 302
【发布时间】:2013-11-05 11:32:06
【问题描述】:

我的应用程序需要从网络上下载一些图像,而几个月来我一直在使用 Volley 来处理其他基本请求。但是,当我尝试在 Android 2.2 上从网络获取图像时,会出现此错误。我只在 Android 4.3 和 android 2.2 上测试过,它在 4.3 上完美运行。

E/Volley(2603): [65] BasicNetwork.performRequest: Unexpected response code 302 for <request URL>

这是我的代码:

imageContainer = imageLoader.get(imageUrl, new ImageListener() {

    public void onErrorResponse(VolleyError error) {
        iv.setImageResource(0); 
    }

    public void onResponse(ImageContainer response, boolean arg1){
        bitmap = response.getBitmap();
        if (bitmap != null) {
             iv.startAnimation(AnimationUtils.loadAnimation(getActivity(), android.R.anim.fade_in));
             iv.setImageBitmap(bitmap);

        } 

    }

});

Volley 不自己处理重定向吗?关于可以在这里做什么的任何想法?

谢谢!

【问题讨论】:

标签: android image http-status-code-302 android-volley


【解决方案1】:

你可以简单地调用

HttpUrlConnection.setFollowRedirects(true);

适用于 API 9 或更高版本。

但是,it doesn't handle HTTP/HTTPS redirects

【讨论】:

  • Volley 必须自己处理这个问题,因为它适用于 API 9+。它是 API 8,它不能自己处理重定向,所以我们必须自己处理它,但仍然没有做太多。
  • API 9+ 仍然不能处理 http 到 https 的重定向
【解决方案2】:

这个问题基本上是Android volley to handle redirect的重复。要解决这个问题,你需要改变 volley,但是已经有人在这个 github 上为你做了这个:github.com/samikirton/android-volley。希望对您有所帮助!

【讨论】:

  • 嗯,这个库也没有为我处理重定向。
【解决方案3】:

这可能与 Volley 在 2.2 (apache) 中使用的 HTTP 堆栈有关,而不是在 API 9 及更高版本中使用 HttpUrlConnection

对此我不太确定,但也许您必须为 API 8 手动处理 URL 重定向。也就是说,获取 HTTP 响应,检查代码并根据标头创建一个新请求(如果它是重定向代码) .

编辑:

快速查看提供给HttpClientStack(用于API 8 的客户端)的代码,在创建新的http 客户端实例时会出现以下代码(AndroidHttpClient 第123 行):

// Don't handle redirects -- return them to the caller.  Our code
// often wants to re-POST after a redirect, which we must do ourselves.
HttpClientParams.setRedirecting(params, false);

您可以尝试将其更改为 true ,看看它是否能解决您的问题。我不确定您的具体需求是什么,但这看起来是个不错的起点。

【讨论】:

  • 感谢您的回复。我必须在哪里改变这个?我是新手。如何更改 Volley 的行为,以便它也处理 api 8 上的重定向?
  • 只看源码。看来您需要创建自己的 AndroidHttpClient 版本(这是一个 Android 源,请参阅我的答案)并在创建新的 HttpClientStack 的 Volley.java(第 59 行)中使用它。
  • 非常感谢!我会试试这个并回复你。
  • 还有其他方法吗?我必须在项目中添加很多文件才能使其正常工作。缺少 apache 和谐包,所以我想我必须手动添加文件,这些文件将具有自己的依赖项,并且也必须添加这些文件。有没有办法获取 url 并自己做重定向的东西?对此进行调查。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-10
  • 1970-01-01
相关资源
最近更新 更多