2017-02-23 203 views
0
 string formUrl = "url"; 
     string formParams = string.Format("params"); 
     string cookieHeader; 
     WebRequest req = WebRequest.Create(formUrl); 
     req.ContentType = "application/x-www-form-urlencoded; charset=UTF-8"; 
     req.Method = "POST"; 
     byte[] bytes = Encoding.ASCII.GetBytes(formParams); 
     req.ContentLength = bytes.Length; 
     using (Stream os = req.GetRequestStream()) 
     { 
      os.Write(bytes, 0, bytes.Length); 
     } 
     WebResponse resp = req.GetResponse(); 
     cookieHeader = resp.Headers["Set-cookie"]; 

     string pageSource; 
     string getUrl = "link to csv file"; 
     WebRequest getRequest = WebRequest.Create(getUrl); 
     getRequest.Headers.Add("Cookie", cookieHeader); 
     WebResponse getResponse = getRequest.GetResponse(); 
     using (StreamReader sr = new StreamReader(getResponse.GetResponseStream())) 
     { 
      pageSource = sr.ReadToEnd(); 
     } 

嘿家伙我目前正在使用此代码,我下了这个网站,我已经下载了提琴手,并能够登录并导航到我想下载我的.csv文件的页面。从网站下载CSV文件

StreamReader确实会带回.csv文件中的内容,但我想将其下载到计算机上的路径中。

getUrl是一个链接,直接链接到我要点击的文件在浏览器中下载。该URL的

例如: http://myurl.com/index.php?controller=AdminRequestSql&token=123&id_request_sql=7&exportrequest_sql=1

很抱歉,如果这不是正确的措辞,我很新的C#和努力学习新的东西。

感谢

回答

1

对于.NET框架4及以上:

string formUrl = "url"; 
    string formParams = string.Format("params"); 
    string cookieHeader; 
    WebRequest req = WebRequest.Create(formUrl); 
    req.ContentType = "application/x-www-form-urlencoded; charset=UTF-8"; 
    req.Method = "POST"; 
    byte[] bytes = Encoding.ASCII.GetBytes(formParams); 
    req.ContentLength = bytes.Length; 
    using (Stream os = req.GetRequestStream()) 
    { 
     os.Write(bytes, 0, bytes.Length); 
    } 
    WebResponse resp = req.GetResponse(); 
    cookieHeader = resp.Headers["Set-cookie"]; 

    string pageSource; 
    string getUrl = "link to csv file"; 
    WebRequest getRequest = WebRequest.Create(getUrl); 
    getRequest.Headers.Add("Cookie", cookieHeader); 
    WebResponse getResponse = getRequest.GetResponse(); 
    using (StreamReader sr = new 
    using (Stream output = File.OpenWrite("filename.csv")) 
    using (Stream input = getResponse.Response.GetResponseStream()) 
    { 
     input.CopyTo(output); 
    } 

对于.NET框架低于4

using (Stream output = File.OpenWrite("filename.csv")) 
    using (Stream input = getResponse.Response.GetResponseStream()) 
    { 
     byte[] buffer = new byte[8192]; 
     int bytesLength; 
     while ((bytesLength = input.Read(buffer, 0, buffer.Length)) > 0) 
     { 
       output.Write(buffer, 0, bytesLength); 
     } 
    } 

两者之间的区别是,你需要下载手动为较低的框架提供文件。此外,建议使用WebClient类。你可以找到如何使用该课程的大量资源。目前,您可以开始here

+0

谢谢你,我没有使用你的代码,但我跟着你的链接,并能够使用WebClient.Downloadfile。 非常感谢! – fabel123