delphi и ICS [HTTP.Cli1]

#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 отлично справляется, спасибо за совет 🙂