я уже могу зайти на веб-страницу с переадресацией (я спасаю печенье) с этим кодомC# скачать файл из Интернета с логином
CookieCollection cookies = new CookieCollection();
HttpWebRequest cookieRequest = (HttpWebRequest)WebRequest.Create("https://www.loginpage.com/");
cookieRequest.CookieContainer = new CookieContainer();
cookieRequest.CookieContainer.Add(cookies);
HttpWebResponse cookieResponse = (HttpWebResponse)cookieRequest.GetResponse();
cookies = cookieResponse.Cookies;
string postData = "name=********&password=*********&submit=submit";
HttpWebRequest loginRequest = (HttpWebRequest)WebRequest.Create("https://www.loginpage.com/");
loginRequest.CookieContainer = new CookieContainer();
loginRequest.CookieContainer.Add(cookies);
loginRequest.Method = WebRequestMethods.Http.Post;
loginRequest.UserAgent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.121 Safari/535.2";
loginRequest.AllowWriteStreamBuffering = true;
loginRequest.ProtocolVersion = HttpVersion.Version11;
loginRequest.AllowAutoRedirect = true;
loginRequest.ContentType = "application/x-www-form-urlencoded";
byte[] byteArray = Encoding.ASCII.GetBytes(postData);
loginRequest.ContentLength = byteArray.Length;
Stream newStream = loginRequest.GetRequestStream(); //open connection
newStream.Write(byteArray, 0, byteArray.Length); // Send the data.
newStream.Close();
Это прекрасно работает, но мне нужно, чтобы загрузить файл .xls из там, она находится здесь (например)
https://www.loginpage.com/export_excel.php?export_type=list
для этого я попробовал этот код
HttpWebRequest wr = (HttpWebRequest)HttpWebRequest.Create("https://www.loginpage.com/export_excel.php?export_type=list");
HttpWebResponse ws = (HttpWebResponse)wr.GetResponse();
Stream str = ws.GetResponseStream();
byte[] inBuf = new byte[100000];
int bytesReadTotal = 0;
string path = @"d:\test.xlsx";
FileStream fstr = new FileStream(path, FileMode.Create, FileAccess.Write);
while (true)
{
int n = str.Read(inBuf, 0, 100000);
if ((n == 0) || (n == -1))
{
break;
}
fstr.Write(inBuf, 0, n);
bytesReadTotal += n;
}
str.Close();
fstr.Close();
но не ш orking, и теперь я застрял с этим
string dLink = "https://www.loginpage.com/export_excel.php?export_type=list";
HttpWebRequest fileRequest = (HttpWebRequest)HttpWebRequest.Create(dLink);
fileRequest.CookieContainer = new CookieContainer();
fileRequest.CookieContainer.Add(cookies);
fileRequest.UserAgent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.121 Safari/535.2";
HttpWebResponse fileResponse = (HttpWebResponse)fileRequest.GetResponse();
for (int i = 0; i < fileResponse.Headers.Count; ++i)
richTextBox1.Text += "\nHeader Name: " + fileResponse.Headers.Keys[i] + ", Value :" + fileResponse.Headers[i];
Конечно, он не загружает файл. Я пытаюсь получить заголовки, чтобы просто понять, что я получаю из Интернета? Я уже загрузил некоторые файлы с моим скриптом из таких файлов, как rghost или filehippo, но этот не работает.
Рассматривали ли вы попытку реорганизовать свой код и использовать 'WebClient' для загрузки ..? или вам нужно придерживаться «HttpWebRequest» ..? – MethodMan
@DJKRAZE HttpWebRequest обычно более гибкий, чем WebClient, поскольку WebClient использует HttpWebRequest под ним. WebClient упрощает использование, но также иногда удаляет необходимую гибкость. –
Мне не нужно, мне просто нужно скачать этот файл любым возможным способом :) – MyMomSaysIamSpecial