Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / HTML страница / 6 сообщений из 6, страница 1 из 1
13.02.2006, 16:07:50
    #33541315
kirstr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HTML страница
Добрый день!Пишу прогу на VB6.0 для скачивания HTML страницы с использованием OpenURL . После сохранения файла на диске я не могу по какой то причине его полностью скачать( тоесть ок скачивается частично),в чем здесь проблема
src = Inet1.OpenURL("http://" & Un & ":" & Pw & "@" & txtServer)
где Un - логин Pw - пароль
...
Рейтинг: 0 / 0
13.02.2006, 16:49:53
    #33541477
HTML страница
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
13.02.2006, 16:54:50
    #33541498
kirstr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HTML страница
Я например знаю что страница html к которое я добираюсь имеет большое число тегов ,и эту страницу я просматриваю browser (IE 6.0) .теперь когда пишу скажем код на VB 6.0 в точности ваш .наблюдаю что скачена и сохраненена страница не полность ( только до середины и меньше)
...
Рейтинг: 0 / 0
13.02.2006, 17:55:26
    #33541661
kirstr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HTML страница
Да, я еще не сказал,пожалуй главного, что страница html формируется динамически
...
Рейтинг: 0 / 0
14.02.2006, 00:47:27
    #33542263
HTML страница
Что удалось выяснить.

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


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