Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,707
Записей в блоге: 14

Закачка из Интернета по протоколу https - возможно ли?

02.05.2015, 18:53. Показов 2396. Ответов 12

Студворк — интернет-сервис помощи студентам
У компонента MsInet есть свойство "протокол" и одно из значений HTTPS (при этом порт автоматически ставится верно - 443). Но данные не скачиваются.

Попытка вызвать API-функцию URLDownloadToFile тоже не приводят к результату. На StackOverflow нашел подходящий диалог: пользователь приводит пример попытки загрузить через https (не работает). Эксперт ему отвечает и приводит URL с http.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.05.2015, 18:53
Ответы с готовыми решениями:

Закачка файла на www сервер по http/https
Уважаемые гуру, может быть кто-то знает как из VB сделать закачку файла на www сервер по http/https. На сервере установлен соответствующий...

Как передать по протоколу https?
Здравствуйте, вот смотрю функция POST, которой пользуюсь для отправки данных пользователем - на php.net написано, что в этом случае данные...

Не открывается вообще ничего по протоколу https
Суть проблемы в заголовке. Не открывает ни один сайт через https, гугл диск - тоже, винда обновлятся не может и т.п. Главный вопрос - вирус...

12
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
02.05.2015, 19:32
Лучший ответ Сообщение было отмечено Catstail как решение

Решение

Visual Basic
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
34
35
36
37
38
39
40
41
42
43
44
Option Explicit
 
Private Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenW" (ByVal sAgent As Long, ByVal lAccessType As Long, ByVal sProxyName As Long, ByVal sProxyBypass As Long, ByVal lFlags As Long) As Long
Private Declare Function InternetOpenUrl Lib "wininet.dll" Alias "InternetOpenUrlW" (ByVal hOpen As Long, ByVal sURL As Long, ByVal sHeaders As Long, ByVal lLength As Long, ByVal lFlags As Long, ByVal lContext As Long) As Long
Private Declare Function HttpQueryInfo Lib "wininet" Alias "HttpQueryInfoW" (ByVal hRequest As Long, ByVal dwInfoLevel As Long, lpBuffer As Any, ByRef lpdwBufferLength As Long, ByRef lpdwIndex As Long) As Long
Private Declare Function InternetReadFile Lib "wininet.dll" (ByVal hFile As Long, sBuffer As Any, ByVal lNumBytesToRead As Long, lNumberOfBytesRead As Long) As Integer
Private Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Integer
Private Declare Function InternetSetFilePointer Lib "wininet" (ByRef hFile As Long, ByVal lDistanceToMove As Long, pReserved As Any, ByVal dwMoveMethod As Long, ByVal dwContext As Long) As Long
 
Private Const FILE_BEGIN                    As Long = 0
Private Const INTERNET_OPEN_TYPE_PRECONFIG  As Long = 0
Private Const INTERNET_FLAG_RELOAD          As Long = &H80000000
Private Const HTTP_QUERY_CONTENT_LENGTH     As Long = 5
Private Const HTTP_QUERY_FLAG_NUMBER        As Long = &H20000000
 
Private Sub Form_Load()
    Dim hInternet   As Long
    Dim hURL        As Long
    Dim size        As Long
    Dim arr()       As Byte
    Dim ret         As Long
 
    hInternet = InternetOpen(StrPtr(App.ProductName), INTERNET_OPEN_TYPE_PRECONFIG, 0, 0, 0)
    If hInternet = 0 Then Exit Sub
    
    hURL = InternetOpenUrl(hInternet, StrPtr("https://msdn.microsoft.com/ru-ru/library/windows/desktop/aa384238(v=vs.85).aspx"), 0, 0, INTERNET_FLAG_RELOAD, 0)
    If hURL = 0 Then Exit Sub
    
    ret = HttpQueryInfo(hURL, HTTP_QUERY_CONTENT_LENGTH Or HTTP_QUERY_FLAG_NUMBER, size, Len(size), 0)
    If ret = 0 Then Exit Sub
    
    ReDim arr(size - 1)
    
    InternetSetFilePointer hURL, 0, ByVal 0, FILE_BEGIN, 0
    
    ret = InternetReadFile(hURL, arr(0), size, 0)
    If ret = 0 Then Exit Sub
    
    InternetCloseHandle hURL
    InternetCloseHandle hInternet
    
    Debug.Print StrConv(arr(), vbUnicode)
 
End Sub
Это пример, некоторых проверок нет вроде нулевого размера буфера и т.д.
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,707
Записей в блоге: 14
02.05.2015, 21:10  [ТС]
The trick, что-то у меня в старом XP неблагополучно... InterhetOpen проходит, а InterhetOpenUrl возвращает 0.
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
02.05.2015, 21:18
Цитата Сообщение от Catstail Посмотреть сообщение
InterhetOpen проходит, а InterhetOpenUrl возвращает 0.
У меня также.
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
02.05.2015, 21:54
Не разбирался досконально, но в дебаггере что-то есть
Явно не полностью. для анализа надо печатать в файл
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
02.05.2015, 22:18
Catstail, Err.LastDllError?
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,707
Записей в блоге: 14
03.05.2015, 21:05  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
Err.LastDllError?
= -2146869244
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
03.05.2015, 22:06
У меня в XP вот этот простенький код работает:
Visual Basic
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
Const scUserAgent = "Mozilla/5.0"
' Тут можно поиграться с типами подключения, в коде INTERNET_OPEN_TYPE_PRECONFIG или INTERNET_OPEN_TYPE_DIRECT
Const INTERNET_OPEN_TYPE_PRECONFIG = 0
Const INTERNET_OPEN_TYPE_DIRECT = 1
Const INTERNET_OPEN_TYPE_PROXY = 3
 
Const INTERNET_FLAG_RELOAD = &H80000000
Const sURL = "https://msdn.microsoft.com/ru-ru/library/windows/desktop/aa384238(v=vs.85).aspx"
Private Declare Function InternetOpen Lib "wininet" Alias "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
Private Declare Function InternetCloseHandle Lib "wininet" (ByVal hInet As Long) As Integer
Private Declare Function InternetReadFile Lib "wininet" (ByVal hFile As Long, ByVal sBuffer As String, ByVal lNumBytesToRead As Long, lNumberOfBytesRead As Long) As Integer
Private Declare Function InternetOpenUrl Lib "wininet" Alias "InternetOpenUrlA" (ByVal hInternetSession As Long, ByVal lpszUrl As String, ByVal lpszHeaders As String, ByVal dwHeadersLength As Long, ByVal dwFlags As Long, ByVal dwContext As Long) As Long
Private Sub Form_Load()
     Dim hOpen As Long, hFile As Long, sBuffer As String, Ret As Long, https As String
    'Создаем буфер
    sBuffer = Space(1000)
    'Открываем соединение
    hOpen = InternetOpen(scUserAgent, INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, vbNullString, 0)
    'Открываем URL
    hFile = InternetOpenUrl(hOpen, sURL, vbNullString, ByVal 0&, INTERNET_FLAG_RELOAD, ByVal 0&)
    'Читаем в цикле, пока есть инфа
    Do
    InternetReadFile hFile, sBuffer, 1000, Ret
    https = https & sBuffer
    Loop While Ret
    
    ' Всё закрываем
    InternetCloseHandle hFile
    InternetCloseHandle hOpen
    'Смотрим, что закачали
    Text1.Text = https ' Что бы увидеть результат, всё в текст
End Sub
Сейчас The trick меня ругать будет за подобное InternetOpenA, а не W, но это я специально, XP иногда не очень с юникодом дружит, может сейчас именно такой случай? Ну как вариант стоит попробовать, у меня работает без "кракозяблов".
1
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
04.05.2015, 19:58
Цитата Сообщение от Catstail Посмотреть сообщение
= -2146869244
Попробуйте так, добавьте 2 константы:
Visual Basic
1
2
Private Const INTERNET_FLAG_IGNORE_CERT_DATE_INVALID  As Long = &H2000
Private Const INTERNET_FLAG_IGNORE_CERT_CN_INVALID    As Long = &H1000
Измените строку 26:
Visual Basic
1
2
3
4
5
6
    hURL = InternetOpenUrl(hInternet, _
                           StrPtr("https://msdn.microsoft.com/ru-ru/library/windows/desktop/aa384238(v=vs.85).aspx"), _
                           0, _
                           0, _
                           INTERNET_FLAG_RELOAD Or INTERNET_FLAG_IGNORE_CERT_DATE_INVALID Or INTERNET_FLAG_IGNORE_CERT_CN_INVALID, _
                           0)
Добавлено через 8 часов 59 минут
Заработало?
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,707
Записей в блоге: 14
04.05.2015, 20:10  [ТС]
Увы, нет. LastDllError тот же.
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
04.05.2015, 20:23
А с http работает?
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,707
Записей в блоге: 14
04.05.2015, 20:46  [ТС]
С hhtp этой ошибки не возникает, но HttpQueryInfo возвращает 0
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
05.05.2015, 12:08
Попробуйте вторым параметром в InternetOpen передать INTERNET_OPEN_TYPE_DIRECT.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.05.2015, 12:08
Помогаю со студенческими работами здесь

Закачка файлов с интернета
Всем доброго времени суток. Вобщем сразу к сути: Имеется список из ссылок на файлы. Как с помощью Питона можно произвести поочередную...

Закачка php-файла из интернета
Методов закачки существует много (да и программ закачек много), но вся эта байда скачивает результаты запроса, им (php-файлом)...

Закачка файлов из интернета с отображением прогресса закачивания
My.Computer.Network.DownloadFile("http://cdimage.debian.org/debian-cd/6.0.3/multi-arch/iso-cd/debian-6.0.3-amd64-i386-netinst.iso",...

Ошибка сертификата при открытии в браузере веб-страницы по протоколу HTTPS
Всем привет! Такая проблема выскакивает только на 2х компьютерах И на разных сайтах Компьютер первый не открывает только кинопоиск,...

Отправить пост запрос по протоколу https формат xml на адрес и получить ответ
Нужно отправить пост запрос по протоколу https формат xml на адрес и получить ответ. Параметры запроса я получал из HTTPAnalyzerFullV7. У...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru