|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
05.09.2019, 12:48 | #1 |
Пользователь
Регистрация: 05.09.2019
Сообщений: 54
|
Последовательность байтов, возвращаемых InternetReadFile
Привет всем. У меня задача извлечь с сайта некоторый текст и отобразить его на мониторе.
Я извлекаю текст с помощью этих трех функций: InternetOpen InternetOpenUrl InternetReadFile InternetReadFile возвращает такие байты с сайта, что не известно, что с этими байтами делать. Если я просто копирую html-содержимое с сайта, затем вставляю в Notepad++, сохраняю файл, затем извлекаю байты из файла с помощью своей программы, то последовательность байтов другая и с ними уже что-то да получается сделать. Как извлечь с сайта байты в таком виде, чтобы с ними можно было что-то сделать? Интересует именно этот сайт, а не любой, т.к. проблема именно с этим сайтом, с другими сайтами такой проблемы нет. Прикладываю два файла с байтами. Одни байты получены с помощью "InternetReadFile", вторые я скопировал вручную (Ctrl+C, Ctrl+V) и вставил в Notepad++. Про функцию "URLDownloadToFile" мне известно. У меня вопрос по функции "InternetReadFile". Последний раз редактировалось Alex11223; 10.09.2019 в 11:46. |
07.09.2019, 20:33 | #2 |
Новичок
Джуниор
Регистрация: 07.09.2019
Сообщений: 1
|
Извините, не смотрел по ссылке включая ваш пакет - попахивает пиаром.
Так вот, скорее всего, если вы работаете с функцией не предназначенной для работы с Много байтовой кодировкой вы получите что-то подобное "W E L C O M E" вместо "Добро пожаловать". Грузить страницы можно так Код:
|
07.09.2019, 20:37 | #3 |
Пользователь
Регистрация: 05.09.2019
Сообщений: 54
|
А что делать с функцией "InternetReadFile"? Отказаться от её использования? Это бракованная функция?
|
10.09.2019, 11:48 | #4 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Использовать нормальный HTTP клиент.
Например, libcurl.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
10.09.2019, 12:22 | #5 |
Пользователь
Регистрация: 05.09.2019
Сообщений: 54
|
А InternetReadFile считается ненормальным? Его ведь сделали в Microsoft'е, а не какой-то программист-самоучка.
Получается, что InternetReadFile изменяет извлеченные байты. Сначала InternetReadFile извлекает байты, затем внутренний механизм функции "InternetReadFile" изменяет байты и выдает их. |
10.09.2019, 12:37 | #6 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Ну как минимум это менее удобно.
И может быть не поддерживает что-то новое. Вообще еще надо не забывать заголовки выставлять. Например, может какой-нибудь сервер блокирует по стандартным юзерагентам ботов (или другим заголовкам не похожими на браузеры).
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
10.09.2019, 12:42 | #7 |
Пользователь
Регистрация: 05.09.2019
Сообщений: 54
|
Насколько я начинаю понимать, любая библиотека или еще что-то сделана на основе Win32 api-функций. В том числе и libcurl тоже использует Win32 api-функции.
Значит libcurl использует "URLDownloadToFile". Alex11223, можете скачать байты с сайта, который указан в первом посте, с помощью "libcurl" и посмотреть, все ли нормально? У меня нет возможности протестировать "libcurl". Последний раз редактировалось Alex11223; 10.09.2019 в 13:09. |
10.09.2019, 13:08 | #8 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Нет, там же есть более низкоуровневые функции (сокеты и т.д.) не привязанные к HTTP.
нет, он и в браузере не работает.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
10.09.2019, 14:24 | #9 |
Пользователь
Регистрация: 05.09.2019
Сообщений: 54
|
Alex11223, а что вы скачивали? В первом посте ссылки на сайт удалили.
Всё, вижу, вы и удалили ссылки. У меня открывается этот сайт в браузере. Если бы сайт не открывался в браузерах, я бы не создал этой темы. И есть другие инструменты для скачивания по HTTP, они нормально скачивают, в том числе и "URLDownloadToFile". Alex11223, а сокеты это что такое? Тоже Win32 API функции или совсем другое? Кто их сделал эти сокеты? В Microsoft'е? Официальный сайт сокетов есть? По сути нужно скачать байты в исходном виде, без каких-либо преобразований. Я так понимаю это делает "URLDownloadToFile". Но "URLDownloadToFile" сохраняет в файл. А у меня нет задачи скачать в файл, а нужно отобразить данные на мониторе. Последний раз редактировалось Alex11223; 10.09.2019 в 15:20. |
10.09.2019, 15:18 | #10 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,342
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Где посмотреть список ошибок, возвращаемых PathFileExistsA? | Korshi | Win Api | 16 | 30.04.2019 18:42 |
Проблема с InternetReadFile. | FULEREN | Общие вопросы C/C++ | 7 | 21.12.2014 10:56 |
InternetReadFile не читает архивы | questy | Win Api | 3 | 24.08.2013 11:03 |
Просуммировать последовательность байтов в цикле | deman_sibir | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 0 | 10.09.2012 18:04 |
Последовательность из 6 символов (байтов), размещённых в сегменте данных, записать в обратном порядке | Batyrin | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 2 | 03.06.2011 15:48 |