2012-12-15 38 views
-1

我在我的项目中有一个请求,我需要登录到外部网站并需要从网站下载文件。除登录用户名/密码外,我没有任何访问权限。有什么方法可以使用C#来实现这个功能。谢谢!导航并从外部网站下载文件

+2

是的有很多种方法。但是你对我们有什么期望?为你写吗? –

+0

嗨,我不希望你写代码,只需要建议如何实现这一目标。在这个需求中,我需要打开银行网站并使用uname和pwd登录到网站,然后通过下载文件点击site.till上的一个按钮。现在,这是使用基于协调的文本框和按钮的脚本语言编写的。但是这并不像我们需要在每次布局更改时更改脚本那样高效。 –

回答

0

您可以使用WebBrowser控件和WATIN库一起浏览网站并单击下载按钮。

WebBrowser控件有一个 “下载文件” 事件,您可以处理

2

这取决于类型的网站和身份验证:

1)使用WebClient类

WebClient wc = new WebClient(); 
wc.Credentials = new NetworkCredential(username, password); 
wc.DownloadFile(url, "c:\\"); 

2)如果第一没有工作,你可以使用WebBrowser控件

HtmlElement ele = webBrowser1.Document.GetElementById("email"); 
if (ele != null) 
    ele.InnerText = "username"; 

ele = webBrowser1.Document.GetElementById("pass"); 
if (ele != null) 
    ele.InnerText = "pass"; 

ele = webBrowser1.Document.GetElementById("Login"); 
if (ele != null) 
    ele.InvokeMember("click"); 
+0

您可以通过[UploadValues](http://msdn.microsoft.com/en-us/library/9w7b4fz7.aspx)通过WebClient发布数值。另请参阅[如何使用C#中的WebClient将数据发布到特定的URL](http ://stackoverflow.com/q/5401501/119477) –

+0

Thanq,它的工作。 –

0

实现它如果您可以手动执行此操作,则可以使用C#或任何其他支持HTTP请求的语言以编程方式执行此操作。所有你需要的是:

  1. 找出如何正确认证服务器。完成此操作后,您将获得身份验证令牌和与此令牌关联的会话。然后,您将该令牌附加到服务器的所有后续请求中。

  2. 找出发送哪个请求以获取该特定资源。我会假设它是一个特定URL的GET请求。如果手动执行,使用Fiddler来检查发送了哪些请求。