2013-10-04 2 views
1

Мне нужно загрузить HTML-код, сгенерированный сервером после отправки URL-адреса. Я думал, может быть, файл webclient.download будет работать, но кажется, что он отказывается, когда вы не заканчиваете URL с расширением файла.VB.net Загрузить HTML-адрес URL

Если у меня установлен элемент управления веб-браузером, который перешел на сайт в том же домене, однако у этого веб-браузера установлен обработчик для события, завершенного документом, которое я не хочу запускать.

Если лучшее решение для загрузки страницы и использовать webbrowser.documentstream, чтобы получить поток и записать его в файл У меня есть 2 вопроса:

1) document.stream возвращает System.IO. поток, и файловый объект использует system.io.filestream. Могу ли я легко написать поток в поток, и если да, то как?

2) Я ответил на этот вопрос для себя, когда я печатал его: P

Если это не самое лучшее решение и WebClient может Infact скачать файл после того, как он создан, как бы я идти об этом? \

Edit: Если я способ покинуть базу, не стесняйтесь, дайте мне знать :) Я еще совсем новичок в VB

редактирования: ниже не работает. Мой шаг показал, что я фактически передаю полезные данные в функции, но по некоторым причинам файлы все еще не создаются.

Uniencoding декларация:

Dim uniencoding As New System.Text.UnicodeEncoding() 

Код:

request = WebRequest.Create(tempstring) 
    Using response As WebResponse = request.GetResponse() 
     Using reader As New StreamReader(response.GetResponseStream()) 
      Dim html As String = reader.ReadToEnd() 
      fstream = New FileStream(surl, FileMode.Create) 
      fstream.Write(uniencoding.GetBytes(html), 0, Len(uniencoding.GetBytes(html))) 'Write the HTML to a local file 
     End Using 
    End Using 
+0

Вам не нужно расширение файла, это работает большой wc.DownloadFile ("http://stackoverflow.com/questions/19181470/vb-net-download-html-of-a-url", «C: \ temp.txt»), если вы не хотите сохранять файл, вы можете использовать DownloadString –

+0

. Я хочу сохранить файл, но файл загрузки, похоже, не работает. Я отправлю код за секунду – gNerb

ответ

3

Если все, что вы хотите сделать, это получить HTML (или любой другой ответ содержит), фактически не делая его на экране, может сделать это легко, используя класс WebRequest.

Dim request As WebRequest = WebRequest.Create("http://www.google.com") 
using response As WebResponse = request.GetResponse() 
    Using reader As New StreamReader(response.GetResponseStream()) 
     Dim html As String = reader.ReadToEnd() 
     File.WriteAllText("test.html", html) 
    End Using 
End Using 
+1

Это должно работать отлично, поскольку я могу просто написать html в виде строки в текстовый файл. Я не забочусь о сохранении пробелов и отступов: P – gNerb

+0

Я редактировал выше, чтобы показать, что я пытаюсь сделать. По какой-то причине файл не создается в каталоге, но программа не возвращает ошибки. Есть идеи? – gNerb

+0

Я обновил свой ответ, чтобы показать простой способ записи строки html в файл. –

Смежные вопросы