在C#中通过Javascript回发下载文件

时间:2011-11-06 16:02:45

标签: c# javascript post

编辑: 我会更具体。我想做一个脚本每天下载一组文件。 要以编程方式执行此操作,我需要单击一个javascript按钮。 将URL放入WebRequest类时很简单,但在javascript按钮中我没有URL。我该如何安装此URL?

请求(由Fiddler提供):

POST /SomeSite?Something.aspx HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
Referer: http://www.Site.com/Stackoverflow/SomeSite?Something.aspx
Accept-Language: pt-BR
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
Host: www.Site.com
Content-Length: 10616
Connection: Keep-Alive
Pragma: no-cache
Cookie: idioma=pt-br; WT_FPC=id=187.16.81.13-3324702672.30186643:lv=1320587789589:ss=1320587578749

__EVENTTARGET=ctl00%24contentPlaceHolderConteudo%24lnkDownloadArquivo&__EVENTARGUMENT=&__VIEWSTATE=%BlaBlaBla

2 个答案:

答案 0 :(得分:1)

在这里,您可以看到_EVENTTARGET正在使用带有链接Button的回发,其名称为“lnkDownloadArquivo”。到目前为止,我知道你想要在没有按钮点击的情况下模拟相同的下载请求如果是,那么你可以在这里查看解决方案。 http://ciintelligence.blogspot.com/2011/01/fetching-aspnet-authenticated-page-with.html。  在这里你可以了解asp.net按钮回发请求是如何工作的。

答案 1 :(得分:0)

您需要的内置类是HTTPWebRequest(或WebRequest)类。要创建一个,请调用System.Net.WebRequest.Create()并传递您的网址,使用Headers集合添加相应的标头,写入从Stream检索到的WebRequest.GetRequestStream(),然后使用{检索响应{1}}。从检索到的响应对象中,您可以使用WebRequest.GetResponse()获取响应Stream。然后可以像读取任何其他WebResponse.GetResponseStream()对象一样读取Stream