有一个网站:http://site.domain.com http://site.domain.com它会通过“Windows 安全”对话框提示输入凭据。因此,我设法使用 WebBrowser 控件导航到该页面并发送击键来输入密码 - 我找不到其他方法。
现在,网站生成了一个指向我要下载的文件的链接,如下所示:http://site.domain.com/operations/reporting/csv/Report720_2553217.csv http://site.domain.com/operations/reporting/csv/Report720_2553217.csv
我尝试使用 WebClient 下载文件,但它什么也没做(br 是我的 WebBrowser 控件):
WebClient wb = new WebClient();
wb.Headers.Add( br.Document.Cookie);
wb.DownloadFile(link, @"report.csv");
我一直在尝试寻找可行的解决方案,但无济于事。我知道网络客户端未经过身份验证,因此尝试使用网络浏览器的 cookie,但它不起作用。该 cookie 如下所示:
TLTUID=61FE48D8F9B910F9E930F42D6A03EAA6; TLTSID=0B2B8EE82688102641B7E768807FA8B2; s_cc=真; s_sq=%5B%5BB%5D%5D; ASPSESSIONIDQQSTRDQS=FNPJCODCEMGFIDHFLKDBEMHO
所以我有两个问题:
如何允许 Web 客户端下载可从 Web 浏览器会话访问的文件。在上面的代码示例中我做错了什么?
有没有一种简单的方法可以仅使用 WebBrowser 下载该文件并将其保存到我选择的路径和文件名?或者如何使用 WebClient 或其他东西来完成这一切?
不可能,据我所知。WebClient
and WebBrowser
使用不同的层来访问网络。WebClient
uses WinHTTP http://msdn.microsoft.com/en-us/library/windows/desktop/aa382925%28v=vs.85%29.aspx, WebBrowser
uses UrlMon http://msdn.microsoft.com/en-us/library/ee318402%28v=vs.85%29.aspx。因此,它们将具有单独的会话(包括身份验证缓存)。
这是可能的,只需使用任何UrlMon http://msdn.microsoft.com/en-us/library/ee318402%28v=vs.85%29.aspx用于下载文件的 API,例如URLDownloadToFile
or URLDownloadToCacheFile
。我刚刚回答了一个类似的问题 https://stackoverflow.com/a/18995830/1768303.
顺便说一句,您不必输入击键来提供身份验证凭据。你可以实施身份验证Ex http://msdn.microsoft.com/en-us/library/cc709426%28v=vs.85%29.aspx on WebBrowser
为此的站点对象。这是更多信息 https://stackoverflow.com/a/18619110/1768303.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)