0

在我的 WPF 上Window,我将ImageUriSource设置为 Internet 上某些图像的 URL。

<Image>
    <Image.Source>
        <BitmapImage UriSource="http://tinyurl.com/anmucph" />
    </Image.Source>
</Image>

当我在 Internet 上使用可公开访问的图像时,一切正常:WPF 框架执行必要的 HTTP GET 请求并显示图像。

我想要做的是使用UriSource一个 URL,它需要 HTTP GET 请求附带一个 Authorization 标头。(我有我想要使用的所需的 Authorization 标头字符串。)

如何使用UriSource需要授权的?WPF中有内置的东西吗?或者这是否需要定制解决方案?如果是这样,我如何连接到 WPF 框架以提供自定义逻辑来执行 HTTP GET?

4

3 回答 3

3

我知道这是一个旧线程,但我想跟进我找到的解决方案。

.net 有一个很酷的功能,可以让您在系统或应用程序级别上用自己的方法覆盖它的核心。这可以为 WebRequest.Create 方法完成

http://msdn.microsoft.com/en-us/library/bc0fhzk5.aspx

这篇文章是一个包含 IWebRequestCreate 的完整示例,因此您不会陷入递归。

将标头添加到机器上的所有* HTTP 请求

毕竟,您的应用程序范围内的所有内容都将被迫使用您的 create 方法。

注意:在添加您的 auth 标头之前,请确保您在正确的域中,这样您就不会将您的 auth 提供给其他地方 :)

于 2014-04-20T05:36:54.907 回答
0

你有资源的用户名和密码吗?如果只是标准的 HTTP 身份验证,您可以像这样指定域名:

http://username:password@tinyurl.com/anmucph
于 2013-02-19T20:51:43.013 回答
0

使用 WPF 中内置的工具无法做到这一点。

另一种方法是创建一个轻量级的本地 HTTP 代理,它只有一个

  • GET http://localhost:####/proxy?uri={uri}&authorization={authorization}

操作(其中端口 #### 在防火墙后面),这反过来会产生

  • GET {uri}

使用提供的授权标头值请求。

然后,您可以将要显示的受保护资源的 URI 编码 URI设置UriSourcehttp://localhost:####/proxy?uri=X&authorization=Y哪里,并且是与请求一起发送的 URI 编码授权标头。XYGET

于 2013-04-10T20:49:31.760 回答