当我需要在请求中使用cookie时,使用齐射加载图像的最简单方法是什么?

时间:2013-05-29 16:25:17

标签: android android-volley

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

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

但是如果我需要在请求中放入cookie或参数呢?我见过this question,但我认为这需要修改凌空库。有更简单的方法吗?

5 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

Ogre_BGR提出的解决方案并不合适,因为他正在使用Apache的HTTP客户端。而volley仅在API 8上使用Apache的HTTP客户端,因为它比URLConnection的bug少。但自从姜饼(2.3)以来,建议使用URLConnection,这是Android团队维护和更新的。

我认为更好的解决方案是您提供链接的解决方案。它不会修改Volley,只是添加/保存了Volley已经使用过的cookie。扩展一些Volley的Request类以便快速简单地调用API请求(see here)是很常见的事情。 Ogre_BGR的解决方案完全改变了Volley的HttpStack。

答案 2 :(得分:1)

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

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

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

答案 3 :(得分:0)

至于cookies,我使用URLConnetion(这是Volley on API&gt; 8的默认用例)所做的是实现一个扩展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不会包含这样一个可配置的类,但是哦,你可以在一分钟左右创建自己的类,如上所述。 / p>

答案 4 :(得分:0)

private static RequestQueue mQueue;

String userAgent = "volley/0";
HttpStack stack = new HttpClientStack(AndroidHttpClient.newInstance(userAgent));
mQueue = Volley.newRequestQueue(this, stack, 100 * 1024 * 1024);