Господа, задача в следующем.
Есть список URL типа load.php?a=
По этих адресах картинки которые нужно скачать. Если использовать HTTP_Get, то как предварительно получить имя и расширение?
Решил сначала отправлять GET запрос в помощью TCP_Client в ответе от сервера имеются необходимые данные, но столкнулся с проблемой. TCP_Client не имеет свойства аналогичного Wait в HTTP_Get(True - ожидать окончания закачки, False - создать отдельный поток и вернуть управление основной программе)
Также при переборе строк, в след за первой строкой(URL) идет следующая, также прога не ждет пока TCP_Client получит ответ от сервера.
Конечно решить можно, но не охота переделывать схему. Может у кого есть какие то идеи?
Для наглядности кусочек схемки.
code_26117.txt
Некоторым может показаться что проблемы нету. Так вот принцип следующий.
Прога сканирует вики, качает страницы, далее парсит скачанную страницу и все URL-ы заменяет на локальные(сохраненные на компе). Можно все урлы скачать по завершению работы, но мне нужно сразу же заменять ссылки типа "load.php?a=" на локальные.
Также прога CHMCreator для автоматизированного обновления оффлайн справки. Подробности здесь Alternative build HiAsm
Этот топик читают: Гость
Ответов: 1058
Рейтинг: 76
|
|||
карма: 0 |
| ||
файлы: 1 | code_26117.txt [1.4KB] [98] |
Ответов: 3889
Рейтинг: 362
|
|||
tom-it писал(а): Решил сначала отправлять GET запрос в помощью TCP_ClientА не целесообразнее заменить GET на HEAD Просто вы перегружаете сервер двойной нагрузкой своими запросами и ненужное (на первом этапе) тело картинки получаете вдобавок, грузите канал и тратите время (вероятность супер интеллектуального кэширования ответов на одинаковые запросы у, скажем, провайдера, пока не рассматриваем). С методом HEAD сперва удобно проверить, обновилась ли картинкастатья вообще, ничего кроме заголовка не закачивая и не нагружая каналы и системы. ------------ Дoбавленo в 16.37: tom-it писал(а): прога не ждет пока TCP_Client получит ответ от сервераДело в том, что получение данных происходит не в том потоке, в котором происходил запрос ------------ Дoбавленo в 16.41: tom-it писал(а): TCP_Client не имеет свойства аналогичного Wait |
|||
карма: 1 |
|
Ответов: 1058
Рейтинг: 76
|
|||
1nd1g0 писал(а): А не целесообразнее заменить GET на HEADК этому еще не дошел, ведь задача была дождаться ответа от сервера. 1nd1g0 писал(а): Именно для таких случаев там предусмотрена нижняя точка ActiveЕсли не затруднит примерчик приведите, чет мозги совсем не варят сегодня |
|||
карма: 0 |
|
Ответов: 3889
Рейтинг: 362
|
|||
tom-it, подумалось тут, что можно устроить насильную синхронизацию ещё и по критическим секциям (заодно GET заменил на HEAD):
|
|||
карма: 1 |
|
Ответов: 1058
Рейтинг: 76
|
|||
Не совсем то, но после тщательного просмотра страниц выяснилось что таких адресов всего два. Поэтому решил не заморачиваться и вынес их в список загрузки и замены по умолчанию.
|
|||
карма: 0 |
|
Ответов: 3889
Рейтинг: 362
|
|||
tom-it, Как бы там ни было, по возможности используйте HEAD при проверке обновлений файлов
|
|||
карма: 1 |
|
Ответов: 1058
Рейтинг: 76
|
|||
1nd1g0 писал(а): HEAD при проверке обновлений файловВ данном случае между запросами нет разницы, поскольку ответы в обоих случаях идентичны, как по размеру, так и по содержанию. А для проверки обновленных страниц HEAD не подходит, в ответе нет данных о последнем редактировании. Для этих целей использую GET на следующий адрес http://hiasm.com/index_serv.php?q=24&p=... В любом случае при первом запуске будет более 2000 запросов, поэтому чтобы хоть как то уменьшить нагрузку на сервер ввел регулируемую(указывается в командной строке во время запуска) задержку между запросами. |
|||
карма: 0 |
|
7