wxHTTP - отображение html содержимого |
Здравствуйте, гость ( Вход | Регистрация )
wxHTTP - отображение html содержимого |
Гость_wxFan_* |
12.9.2011, 16:00
Сообщение
#1
|
Гости |
Привет всем! Проблема заключается в отображении содержимого страницы с инета на консоль. Запрос успешно проходит, но вот попытка распаковать содержимое и впихать его в wxString приводит к переполнению wxString объекта. Без отладки это выглядит как пустая консолька, которая через некоторое время валится с ошибкой SIGSEGV. Валится прога после вызова Read. Сам вызов при отлаживании около 5сек происходит (курсор текущей строки отладки пропадает, после чего появляется вместе с SIGSEGV ошибкой на следующей после ...Read строки)
Функция, занимающаяся коннектом
Консолька
Если убрать код, занимающийся распаковкой gzip и записью распакованного содержимого в буфер, а взамен раскомментировать 3 строчки, то на хард успешно запишется файл 1.gzip (5кб), распаковав который архиватором получается файл без расширения (11кб), который содержит в себе нужную страницу. Несмотря на это запись файла в 5кб происходит подозрительно небыстро (может, около 5 сек +-): почти мгновенно появляется файл в 4кб и уже под конец еще кб добавляется и консолька завершает свою работу. MinGW, Win7 Sp1 Pro, CodeLite IDE 3.0.5045, wxWidgets 2.9.2 (unicode=on) |
|
|
Iron Bug |
12.9.2011, 20:18
Сообщение
#2
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
тут возможны тонкости с кодировкой. почему бы не использовать wxChar вместо wxByte? он, по крайней мере, не будет зависеть от настроек компиляции проекта.
я вот даже навскидку не могу сказать, к чему он приведёт wxByte в конструкторе wxString и как он будет вычислять длину, которая в этом конструкторе не указана явно. а неявно там применяются методы преобразования строк, расписанные в документации на wxString и соответственно, разные методы вычисления длины строки. скорее всего, его заглючивает в этом месте и он не может преобразовать строки. я думаю, всё это отлично можно поглядеть в дебаге или хотя бы проверить длину полученной строки. |
|
|
Гость_wxFan_* |
17.9.2011, 11:51
Сообщение
#3
|
Гости |
Сменил код на следующий, тоже самое. Вероятно, какой-либо баг, либо я по-прежнему что-то упускаю.
Code
Успешно проходит запрос, после чего получаю ошибку, как можно увидеть на скриншоте ниже на функции OnSysRead: Функция OnSysRead:
|
|
|
Sokoloff |
18.9.2011, 9:19
Сообщение
#4
|
Участник Группа: Участник Сообщений: 237 Регистрация: 1.4.2009 Из: Москва Пользователь №: 654 Спасибо сказали: 50 раз(а) Репутация: 11 |
Может вам поиграться с заголовком "Accept-Encoding"? Или сменить метод, или даже отключить сжатие совсем.
|
|
|
Iron Bug |
18.9.2011, 23:30
Сообщение
#5
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
с wxWiki по wxHTTP:
Цитата wxInputStream *GetInputStream(const wxString& path) Get a page from the server specified by the last call to Connect(...). Path is path to a resource on the server not a full URL. Note: You must call one of the Connect functions at least once before using this function or the result will be NULL. Внимательно читаем документацию |
|
|
Гость_wxFan_* |
21.9.2011, 8:57
Сообщение
#6
|
Гости |
Доки читал, оказалось по енвнимательности забыл этот коннект. Всем спасибо, проблема решена)))
|
|
|
Текстовая версия | Сейчас: 29.11.2024, 8:09 |