3

我正在开发一个使用需要登录的 RESTful Web 服务的应用程序。此登录使用会话 cookie 进行验证,并使用 下载任何数据WebClient,我使用了以下扩展名:

public class CookieWebClient : WebClient
{
    [SecuritySafeCritical]
    public CookieWebClient() : base()
    {
    }

    protected override WebRequest GetWebRequest(Uri address)
    {
        var request = base.GetWebRequest(address);
        if (request is HttpWebRequest)
        {
            (request as HttpWebRequest).CookieContainer = App.GlobalCookieContainer;
        }
        return request;
    }
}

但是,返回的一些数据是图像缩略图的 URI,它们以不同的ListBoxes. 在我不得不为 Web 服务使用登录之前,我只是将 绑定ImageSource到数据中的指定 URI:

<Image Source="{Binding Icon_Url}" />

但是,既然我必须使用登录,我必须在获取图像时提供一个 cookie。因此,我认为 anIValueConverter可以解决问题,我将在其中传递 URI,然后BitmapImage使用我的扩展下载WebClient,直到我记得我只能WebClient在 WP7 上进行异步调用。

所以我的问题是

如何下载请求中必须有 cookie的Image控件的图像?LisBoxItem

谢谢!

4

1 回答 1

0

您可以使用 http 类下载图像并手动设置图像:

var stream = httpResponse.GetResponseStream(); 
var bitmap = new BitmapImage();
bitmap.SetSource(stream);
image.Source = bitmap;

但这不适用于简单的 XAML 绑定...(但您可以将此逻辑包装在附加属性中)

于 2012-08-10T22:01:50.457 回答