![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Padre |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 9.5.2008 Репутация: нет Всего: нет |
Здравствуйте.
Пишу приложение парсящее табло рейсов с сайтов Шереметьево (http://svo.aero/timetable/today/) и Домодедово (http://www.domodedovo.ru/ru/main/airindicator/flightnew/). Создаю объект URL с ссылкой на сайт. Далее вызываю метод openStream. После этого поток используется совместно с SAX парсером HTMLEditorKit. С сайтом Домодедово все это работает на ура, а вот с Шереметьево программа ведет себя странно. Сначала определенное количество запусков приложения проходят неудачно - поток содержит кракозябры в неизвестной кодировке, и длина этого текста явно меньше, чем содержимое читаемой страницы. Потом происходит неожиданное - несколько удачных запусков, возвращаются желаемые данные - потом снова череда неудач. От чего это зависит, проследить не удалось. Я пытался задавать конкретные http-заголовки через URLConnection, надеясь, что все дело в них, т.к. в браузере то все открывается нормально, но это не помогло. Ситуация не изменилась. В чем может быть проблема? |
|||
|
||||
| Su_ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 386 Регистрация: 1.8.2007 Репутация: нет Всего: нет |
Может я ошибаюсь, но оба сайта отвечают модели DOM?
|
|||
|
||||
| Padre |
|
||||||||||||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 9.5.2008 Репутация: нет Всего: нет |
Да вроде бы все ок. А, если нет, то как это может повлиять? Добавлено @ 03:25 Я попробовал проанализировать обмен данными. Получаются такие заголовки: От проги к Домодедово:
После этого идет обмен пакетами. В конце приходит ответ от Домодедово:
Итог: все замечательно. От проги к Шереметьево:
Обмен пакетами. Ответ:
Посмотрел содержимое ответа - все ок, в нем тело страницы, кодировка нормальная. Вот только все пережатое, судя по заголовку. Почему так - хз. В проге, соответственно, выводится не то. При редком удачном соединении после запроса к серверу и довольно длинного обмена пакетами (в несколько раз больше, чем в предыдущем случае) ответ такой:
Далее следует тело страницы, где все отлично. Т.е. в большей части случаев отправляемое сервером тело страницы дополнительно архивируется, а редко (когда все работает верно) - нет. Я правильно понял? В чем тайный смысл происходящего? Это сообщение отредактировал(а) Padre - 23.11.2010, 03:26 |
||||||||||||
|
|||||||||||||
| COVD |
|
||||||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 11 Всего: 43 |
Когда ответ на запрос возвращается порциями, то сервер об этом сообщает хедером
Браузер это понимает. А ваша программа? Каждая порция данных начинается с размера порции в восьмиричном коде. Если же ответ отправляется единым куском, то его длина сообщается в хедере:
и вдобавок ( "контрольный выстрел"), соединение просто закрывается сервером в конце данных:
Вряд ли "архивируется". Просто вы режим "chunked" игнорируете. Скорее всего.
Когда размер ответа серверу заранее не известен, то он отправляет данные порциями ( чанками ), по мере их поступления из базы данных или еще откуда-то. Это обычно включается автоматически, когда в буфере накапливается примерно 1.5 кб , т.е. один пакет. Это сообщение отредактировал(а) COVD - 23.11.2010, 06:03 |
||||||||
|
|||||||||
| Padre |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 9.5.2008 Репутация: нет Всего: нет |
Спасибо за объяснение.
Мне кажется, что Content-Encoding: gzip как раз указывает на то, что информация дополнительно сжимается. |
|||
|
||||
| COVD |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 11 Всего: 43 |
Да, я не заметил. |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Работа с сетью | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |