Страница: 1 |
Вопрос: Инет в дотнет | Добавлено: 21.11.03 09:55 |
Автор вопроса: ![]() |
Как с помощью HttpWebRequest скачать файл? Возможно ли это? Там такие возможности!!! Замена user agent, referer! Текст страницы получить удается, а вот как файл стянуть не знаю: |
Ответы | Всего ответов: 6 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() Администратор ICQ: 326066673 Вопросов: 368 Ответов: 5968 |
Web-сайт: Профиль | Цитата | #1 | Добавлено: 21.11.03 10:25 |
Я сам не пробовал. На Gotdotnet.ru был такой пример (на C#): HttpWebRequest req = WebRequest.CreateFromUrl("http://tra-la-la.com/file.zip"); Stream s = req.GetResponse().GetResponseStream(); |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() Вопросов: 58 Ответов: 201 |
Профиль | Цитата | #2 | Добавлено: 21.11.03 19:56 |
Что еще за CreateFromUrl??? Там, кажется, вообще этого свойства нет. Не больное исследование указывает на System.Security.Policy.Zone.CreateFromUrl и System.Security.Policy.Site.CreateFromUrl. Но что связывает webrequest и это пространства? Кажется, есть шанс на работу моего кода. Он точнее не мой, а из msdn. Короче, там используется streamreader, до меня только-что дошло, что он только для char! А я пытался переделать для битов. Здесь возникает загвоздка: Допустим, я получаю по 256 бит из потока. Но как мне в итоге получить весь файл? Нужно получить массив всего файла. Что-то не могу додуматься: В принципе, можно сохранять на диск в файл, но лучше массив. Подскажи. |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ICQ: 161560107 Вопросов: 9 Ответов: 52 |
Web-сайт: Профиль | Цитата | #3 | Добавлено: 22.11.03 00:49 |
А почему обязательно с помощью HttpWebRequest ? Dim client As New Net.WebClient Dim fileData As Byte() = client.DownloadData(fileUri) А если StreamReader, то Dim reader As New StreamReader(yourStream, Text.Encoding.ASCII) Dim data as String = StreamReader.ReadToEnd А дальше в файл. |
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() Администратор ICQ: 326066673 Вопросов: 368 Ответов: 5968 |
Web-сайт: Профиль | Цитата | #4 | Добавлено: 22.11.03 03:12 |
Попробуй вместо StreamReader юзать BinaryReader. |
Номер ответа: 5 Автор ответа: ![]() ![]() ![]() Вопросов: 58 Ответов: 201 |
Профиль | Цитата | #5 | Добавлено: 22.11.03 15:57 |
--------А почему обязательно с помощью HttpWebRequest ? Читай вторую строчку в вопросе. В WebClient такого нет. |
Номер ответа: 6 Автор ответа: ![]() ![]() ![]() Вопросов: 58 Ответов: 201 |
Профиль | Цитата | #6 | Добавлено: 25.11.03 08:01 |
Блин, не получается!!! Мой код: ... Dim s As Stream = HWReq.GetResponse.GetResponseStream Dim BR As New BinaryReader(s) Dim MassBs(256) As Byte Dim FullFile() As Byte Dim C As Integer = BR.Read(MassBs, 0, 256) While C > 0 AddBytes(FullFile, MassBs) C = BR.Read(MassBs, 0, 256) End While Dim FS As New FileStream("Image.jpg", FileMode.Create) FS.Write(FullFile, 0, FullFile.Length) ... Эта процедура, по идее "соединяет массивы": Private Sub AddBytes(ByRef FileBytes() As Byte, ByVal ResMass() As Byte) Dim Ufb As Integer, Ub As Integer = UBound(ResMass) If FileBytes Is Nothing Then Ufb = 0 Else Ufb = UBound(FileBytes) End If ReDim Preserve FileBytes(Ufb + Ub) Dim ind As Integer, ind2 As Integer For ind = Ufb To UBound(FileBytes) FileBytes(ind) = ResMass(ind2) ind2 += 1 Next End Sub Это все прекрасно работает с потоками, но если он сетевой, то сохраняет всякую муть(полосы разного цвета). Может, BR.Read(MassBs, 0, 256) возвращает не только байты файла, а еще содержит какие-то данные? Дайте ссылку на формат http, я искал - не нашел... |
Страница: 1 |
|