在我的WPF上Window
我有一个Image
,其UriSource
设置为互联网上某些图片的网址。
<Image>
<Image.Source>
<BitmapImage UriSource="http://tinyurl.com/anmucph" />
</Image.Source>
</Image>
当我在互联网上使用可公开访问的图像时,一切正常:WPF框架执行必要的HTTP GET请求并显示图像。
我想要做的是使用UriSource
,这是一个需要HTTP GET请求带有Authorization标头的URL。 (我有我想要使用的Authorization标头字符串。)
如何使用需要授权的UriSource
? WPF内置了一些东西吗?或者这是否需要自定义解决方案?如果是这样,我如何挂钩到WPF框架以提供用于执行HTTP GET的自定义逻辑?
答案 0 :(得分:3)
我知道这是一个老线程,但我想跟进我找到的解决方案。
.net有一个很酷的功能,可以让你在系统或应用程序级别使用自己的方法覆盖它的核心。这可以用于WebRequest.Create方法
请参阅http://msdn.microsoft.com/en-us/library/bc0fhzk5.aspx
这篇文章是一个完整的例子,包括IWebRequestCreate,所以你不会陷入递归。
Add header to all* HTTP requests on a machine
毕竟,应用程序范围内的所有内容都将被强制使用您的create方法。
注意:在添加您的身份验证标题之前,请确保您位于正确的域名中,这样您就不会将身份验证提供给其他地方:)
答案 1 :(得分:0)
您是否拥有该资源的用户名和密码?如果它只是标准的HTTP身份验证:
,您可以指定这样的域名http://username:password@tinyurl.com/anmucph
答案 2 :(得分:0)
使用WPF内置的工具无法做到这一点。
另一种方法是创建一个具有单个
的轻量级本地HTTP代理GET http://localhost:####/proxy?uri={uri}&authorization={authorization}
操作(端口####位于防火墙后面),而后者又生成
GET {uri}
请求提供的授权标头值。
然后,您可以将UriSource
设置为http://localhost:####/proxy?uri=X&authorization=Y
,其中X
是您要显示的安全资源的URI编码URI,Y
是URI编码的授权要使用GET
请求发送的标头。