#delphi
#delphi
Вопрос:
Итак, у меня проблема с поиском веб-страницы поиска Google. Когда я пытаюсь выполнить простой запрос, например:
http://www.google.ba/search?q=inurl:Stackoverflowamp;num=100amp;hl=enamp;start=0amp;sa=N
В этом случае это inurl:StackOverflow
И Indy и ICS Http.Cli1 загружают веб-страницу без каких-либо проблем, но когда я пытаюсь:
http://www.google.ba/search?q=inurl:Stackoverflow site:baamp;num=100amp;hl=enamp;start=0amp;sa=N
В этом случае запрос заключается inurl:Stackoverflow site:ba
в том, что я получаю неверный запрос, поэтому я посмотрел в адресную строку и увидел, что Google заменяет пробел на , поэтому затем я пытаюсь :
idhttp1.get('http://www.google.ba/search?q=inurl:Stackoverflow site:baamp;num=100amp;hl=enamp;start=0amp;sa=N');
Я получаю сообщение об ошибке с Indy, поэтому я попробовал ICS
Http.Cli1.url('http://www.google.ba/search?q=inurl:Stackoverflow site:baamp;num=100amp;hl=enamp;start=0amp;sa=N');
Http.cli1.get;
И я получаю сообщение об ошибке «Служба недоступна».
Почему, когда я копирую вставленную ссылку в веб-браузер, она открывается нормально. Почему я не могу получить его с помощью этих компонентов.Что мне делать…
Комментарии:
1. Какую версию Indy вы используете?
2. Я использую delphi 7 indy 9.00.10, но я бы предпочел найти решение для ICS, когда я использую indy, моя программа иногда зависает, с ICS этого никогда не происходит….
3. Indy использует блокировку операций с сокетами по замыслу. Если вы используете его в контексте основного потока, ваше приложение будет выглядеть замороженным, пока Indy занят, так как основной цикл сообщений не обрабатывает новые сообщения. Вы можете поместить компонент TIdAntiFreeze в свою основную форму или переместить свою логику Indy в отдельный рабочий поток.
4. TIdAntiFreeze отлично справляется, спасибо за совет 🙂