2

有一个方便的 com.android.volley.NetworkImageView 小部件扩展 ImageView。根据 Google 的介绍,要使用它,只需要在布局 xml 文件中使用它:
<com.android.volley.toolbox.NetworkImageView

这在活动源代码中:
mImageView.setImageUrl(imageUrl, mImageLoader);

但是,如果我需要在请求中放入 cookie 或参数怎么办?我见过这个问题,但我认为这需要修改 volley 库。有没有更简单的方法?

4

5 回答 5

2

在这里,您可以找到一个项目,其中包含有关使用 Volley 的不同简单示例,包括使用 cookie 和 GET/POST 参数。

于 2013-05-30T13:05:17.903 回答
1

Ogre_BGR 提出的解决方案并不合适,因为他使用的是 Apache 的 HTTP 客户端。并且 volley 仅在 API 8 和更低版本上使用 Apache 的 HTTP 客户端,因为它比 URLConnection 更少错误。但由于 Gingerbread (2.3) 建议使用 URLConnection,它是 Android 团队正在维护和更新的。

我认为更好的解决方案是您提供链接的解决方案。它不会修改 Volley,它只是将 cookie 添加/保存到 Volley 已经使用的cookie。扩展 Volley 的一些 *Request 类以快速轻松地调用 API 请求是很常见的事情(请参见此处)。Ogre_BGR 的解决方案彻底改变了 Volley 的 HttpStack。

于 2013-06-14T08:11:21.503 回答
1

您需要将 xml 布局文件设置为

<com.android.volley.toolbox.NetworkImageView...

您的班级名称中缺少“工具箱”。

于 2013-07-23T22:50:58.687 回答
0

至于 cookie,我为继续使用 URLConnetion(这是 API > 8 上 Volley 的默认用例)所做的是实现一个扩展 HurlStack 的自定义类(Volley 使用 URLConnection 实现 HTTP 客户端),并覆盖 createConnection( URL url),这是用于在每个请求之前获取连接的方法。我刚刚添加了我的用户代理(默认情况下没有发送,使用 HurlStack)和一个 cookie(也没有在 HurlStack 中自动管理)。

这是我的课程代码:

public class CustomHurlStack extends HurlStack {

    public CustomHurlStack() {
        super();
    }

    @Override
    protected HttpURLConnection createConnection(URL url) throws IOException {
        // Create a connection with custom attributes
        HttpURLConnection conn = super.createConnection(url);
        conn.addRequestProperty("User-Agent", "myUserAgent/1.0");
        conn.addRequestProperty("cookie", "myCookie");

        return conn; 
    }
}

这应该是一个可行的解决方案,我不确定为什么 Volley 不包含这样一个可配置的类来使用,但是哦,你可以在短短一分钟左右的时间里创建自己的,如上所述。

于 2013-08-13T09:13:04.510 回答
0
private static RequestQueue mQueue;

String userAgent = "volley/0";
HttpStack stack = new HttpClientStack(AndroidHttpClient.newInstance(userAgent));
mQueue = Volley.newRequestQueue(this, stack, 100 * 1024 * 1024);
于 2015-07-13T04:59:43.563 回答