Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Инет в дотнет Добавлено: 21.11.03 09:55  

Автор вопроса:  Maxik
Как с помощью HttpWebRequest скачать файл? Возможно ли это?
Там такие возможности!!! Замена user agent, referer!
Текст страницы получить удается, а вот как файл стянуть не знаю:

Ответить

  Ответы Всего ответов: 6  

Номер ответа: 1
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #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
Автор ответа:
 Maxik



Вопросов: 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
Автор ответа:
 Андрей Щёкин [darxeth]



ICQ: 161560107 

Вопросов: 9
Ответов: 52
 Web-сайт: www.livejournal.com/users/darxeth_digital
 Профиль | | #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-сайт: www.vbnet.ru
 Профиль | | #4
Добавлено: 22.11.03 03:12
Попробуй вместо StreamReader юзать BinaryReader.

Ответить

Номер ответа: 5
Автор ответа:
 Maxik



Вопросов: 58
Ответов: 201
 Профиль | | #5 Добавлено: 22.11.03 15:57
--------А почему обязательно с помощью HttpWebRequest ?
Читай вторую строчку в вопросе. В WebClient такого нет. 

Ответить

Номер ответа: 6
Автор ответа:
 Maxik



Вопросов: 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 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам