powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / HTML страница
6 сообщений из 6, страница 1 из 1
HTML страница
    #33541315
kirstr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!Пишу прогу на VB6.0 для скачивания HTML страницы с использованием OpenURL . После сохранения файла на диске я не могу по какой то причине его полностью скачать( тоесть ок скачивается частично),в чем здесь проблема
src = Inet1.OpenURL("http://" & Un & ":" & Pw & "@" & txtServer)
где Un - логин Pw - пароль
...
Рейтинг: 0 / 0
HTML страница
    #33541477
kirstrПосле сохранения файла на диске я не могу по какой то причине его полностью скачать.

Противоречив сам себе. Как ты его не можешь скачать, если уже сохранил?

Сохраняешь так?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Dim strURL As String
Dim intFile As Integer

IntFile = FreeFile()

strURL = "http://www.microsoft.com"

Open "c:\temp\MSsource.txt" For Output _
  As #IntFile
Write #IntFile, Inet1.OpenURL(strURL)

Close #IntFile

Объясни причину поподробнее.
...
Рейтинг: 0 / 0
HTML страница
    #33541498
kirstr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я например знаю что страница html к которое я добираюсь имеет большое число тегов ,и эту страницу я просматриваю browser (IE 6.0) .теперь когда пишу скажем код на VB 6.0 в точности ваш .наблюдаю что скачена и сохраненена страница не полность ( только до середины и меньше)
...
Рейтинг: 0 / 0
HTML страница
    #33541661
kirstr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, я еще не сказал,пожалуй главного, что страница html формируется динамически
...
Рейтинг: 0 / 0
HTML страница
    #33542263
Что удалось выяснить.

В VB5.0 был баг, что метод OpenURL не скачивал файлы полностью. Лечилось установкой 2-го сервис пака.

В VB6.0 баг с неполным возвращением файлов остался и как раз связан с динамическими страницами. Мелкософт пишет, что исправил его в SP-4. Или предлагают альтернативный вариант:

Стандартный модуль:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
Public Const INTERNET_OPEN_TYPE_PRECONFIG =  0 
Public Const INTERNET_OPEN_TYPE_DIRECT =  1 
Public Const INTERNET_OPEN_TYPE_PROXY =  3 

Public Const scUserAgent = "VB OpenUrl"
Public Const INTERNET_FLAG_RELOAD = &H80000000

Public Declare Function InternetOpen Lib "wininet.dll" _
  Alias "InternetOpenA" ( _
  ByVal sAgent As String, _
  ByVal lAccessType As Long, _
  ByVal sProxyName As String, _
  ByVal sProxyBypass As String, _
  ByVal lFlags As Long) As Long

Public Declare Function InternetOpenUrl Lib "wininet.dll" _
  Alias "InternetOpenUrlA" ( _
  ByVal hOpen As Long, _
  ByVal sUrl As String, _
  ByVal sHeaders As String, _
  ByVal lLength As Long, _
  ByVal lFlags As Long, _
  ByVal lContext As Long) As Long

Public Declare Function InternetReadFile Lib "wininet.dll" ( _
  ByVal hFile As Long, _
  ByVal sBuffer As String, _
  ByVal lNumBytesToRead As Long, _
  lNumberOfBytesRead As Long) As Integer

Public Declare Function InternetCloseHandle Lib "wininet.dll" ( _
  ByVal hInet As Long) As Integer

На кнопку повесь.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
Private Sub Command1_Click()
    Dim hOpen As Long
    Dim hOpenUrl As Long
    Dim sUrl As String
    Dim bDoLoop As Boolean
    Dim bRet As Boolean
    Dim sReadBuffer As String *  2048 
    Dim lNumberOfBytesRead As Long
    Dim sBuffer As String
    
    sUrl = "http://www.microsoft.com"
    
    hOpen = InternetOpen(scUserAgent, _
      INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, vbNullString,  0 )
    hOpenUrl = InternetOpenUrl(hOpen, _
      sUrl, vbNullString,  0 , INTERNET_FLAG_RELOAD,  0 )
    
    bDoLoop = True
    
    While bDoLoop
        sReadBuffer = vbNullString
        bRet = InternetReadFile(hOpenUrl, _
          sReadBuffer, Len(sReadBuffer), lNumberOfBytesRead)
        sBuffer = sBuffer & Left$(sReadBuffer, lNumberOfBytesRead)
        If Not CBool(lNumberOfBytesRead) Then bDoLoop = False
    Wend
    
    Open "C:\Temp\log.txt" For Binary Access Write As # 1 
    Put # 1 , , sBuffer
    Close # 1 
    
    If hOpenUrl <>  0  Then InternetCloseHandle (hOpenUrl)
    If hOpen <>  0  Then InternetCloseHandle (hOpen)
End Sub

Проверяй.
...
Рейтинг: 0 / 0
HTML страница
    #33542651
kirstr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну как еще можно поблагодарить,спасибо
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / HTML страница
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]