[ Delphi / Pascal ] — начинающим: задаем вопросы

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by begin_end, 28 Apr 2015.

  1. #colorblind

    #colorblind Moderator

    Joined:
    31 Jan 2014
    Messages:
    634
    Likes Received:
    246
    Reputations:
    42
    В запросе кирилические символы нужнокодировать в UNICODE кодировку, тогда все будет работать
     
    #121 #colorblind, 18 Nov 2015
    Last edited: 18 Nov 2015
  2. triblekill

    triblekill Member

    Joined:
    21 Aug 2011
    Messages:
    351
    Likes Received:
    94
    Reputations:
    1
    Как это можно сделать например с такой строкой ? (Synapse)
    Code:
    http.HTTPMethod('GET','https://яндекс.рф);
     
  3. #colorblind

    #colorblind Moderator

    Joined:
    31 Jan 2014
    Messages:
    634
    Likes Received:
    246
    Reputations:
    42
    Этот подход не верный, но на скорую руку сойдет:
    PHP:
    uses IdURI;
    ...
    http.HTTPMethod('GET',TidURI.URLEncode'https://яндекс.рф'));
     
    triblekill likes this.
  4. triblekill

    triblekill Member

    Joined:
    21 Aug 2011
    Messages:
    351
    Likes Received:
    94
    Reputations:
    1
    #colorblind, Спасибо конечно только результат <title>Error 404 (Not Found)!!1</title> ))) это с http, а не с https ) мб функция для смены кодировки есть ?
    Чтобы юзать https читал что нужно подключить SSL только как это сделать с Synapse ?
    А ну вот по сути так норм !
    Code:
    http.HTTPMethod('GET',UTF8Encode('http://www.google.ru/?gws_rd=ssl#newwindow=1&q=Искать'));
    
    Хотя нет не норм (
     
    #124 triblekill, 18 Nov 2015
    Last edited: 18 Nov 2015
  5. #colorblind

    #colorblind Moderator

    Joined:
    31 Jan 2014
    Messages:
    634
    Likes Received:
    246
    Reputations:
    42
  6. triblekill

    triblekill Member

    Joined:
    21 Aug 2011
    Messages:
    351
    Likes Received:
    94
    Reputations:
    1
    <title>Error 411 (Length Required)!!1</title> страница не полностью грузится (
    И при методе GET всё тот же <title>Error 404 (Not Found)!!1</title> (((
     
  7. #colorblind

    #colorblind Moderator

    Joined:
    31 Jan 2014
    Messages:
    634
    Likes Received:
    246
    Reputations:
    42
    хз, какая-то хитрожопая страница. я на википедии тестил, там все норм. Возможно нужно поиграться с параметрами запроса или же сам запрос формируется не верно.
     
  8. triblekill

    triblekill Member

    Joined:
    21 Aug 2011
    Messages:
    351
    Likes Received:
    94
    Reputations:
    1
    Да ничего хитрого нет вот:
    Code:
    http://www.google.ru/?gws_rd=ssl#newwindow=1&q=Что ищем
     
  9. #colorblind

    #colorblind Moderator

    Joined:
    31 Jan 2014
    Messages:
    634
    Likes Received:
    246
    Reputations:
    42
  10. crystalbit

    crystalbit Elder - Старейшина

    Joined:
    6 Jun 2008
    Messages:
    212
    Likes Received:
    88
    Reputations:
    8
    ещё вариант idhttp + библиотеки для ssl
     
  11. alexey-m

    alexey-m Elder - Старейшина

    Joined:
    15 Jul 2009
    Messages:
    518
    Likes Received:
    100
    Reputations:
    37
    самое простое и без необходимости таскать лишние библиотеки с собой - WinInet, если что-то посерьезней и по функциональней надо, то можно libcurl попробовать
     
  12. binarymaster

    binarymaster Elder - Старейшина

    Joined:
    11 Dec 2010
    Messages:
    4,717
    Likes Received:
    10,195
    Reputations:
    126
    Доменные имена кодируются в PunyCode, а не в формате URLEncode.
     
  13. triblekill

    triblekill Member

    Joined:
    21 Aug 2011
    Messages:
    351
    Likes Received:
    94
    Reputations:
    1
    Ну как инкодить то всё таки правильно ? Я уже всё сделал: обновил инди сделал чтобы работало с https осталось только правильная кодировка !!!
     
  14. binarymaster

    binarymaster Elder - Старейшина

    Joined:
    11 Dec 2010
    Messages:
    4,717
    Likes Received:
    10,195
    Reputations:
    126
    А загуглить?
    http://www.programm-school.ru/punycode_unit_for_delphi.html
     
  15. triblekill

    triblekill Member

    Joined:
    21 Aug 2011
    Messages:
    351
    Likes Received:
    94
    Reputations:
    1
    Те же яблоки как были и до этого ! То есть не переводит
    Code:
    str:=idHttp1.Get(PunycodeDecodeDomain('https://www.google.ru/?gws_rd=ssl#newwindow=1&q=Ищу));
    str:=idHttp1.Get(PunycodeDecodeDomain('https://www.google.ru/?gws_rd=ssl#newwindow=1&q=äîðêè'));
    
     
  16. binarymaster

    binarymaster Elder - Старейшина

    Joined:
    11 Dec 2010
    Messages:
    4,717
    Likes Received:
    10,195
    Reputations:
    126
    Punycode только для домена, для остальной части ссылки URLEncode.

    И почему Decode? Вам же закодировать надо, а не раскодировать.
    Code:
    str:=idHttp1.Get('https://' + PunycodeEncodeDomain('яндекс.рф') + URLEncode('/?q=Ищу'));
    И ещё, возможно запрос придётся обернуть в UTF8Encode сначала.
     
  17. triblekill

    triblekill Member

    Joined:
    21 Aug 2011
    Messages:
    351
    Likes Received:
    94
    Reputations:
    1
    Короче вернусь ко я к Twebbrowser; )
     
  18. #colorblind

    #colorblind Moderator

    Joined:
    31 Jan 2014
    Messages:
    634
    Likes Received:
    246
    Reputations:
    42
    А чем не устроил последний приведенный мной пример? Страницы нормально загружаются, парсить можно.
     
  19. triblekill

    triblekill Member

    Joined:
    21 Aug 2011
    Messages:
    351
    Likes Received:
    94
    Reputations:
    1
    Нет там понимаешь в чём ерунда при получении кода страницы я всё же не нахожу тех же ссылок что выдаёт гугл при поиске (
    Лучше и надёжнее TwebBrowser жалко что конечно он требует обязательного наличия internet explorer от пользователя, но всё же лучше чем 100 библиотек подключать и 100 функций !
    Щас бы узнать как проверить открыл ли tweb browser страницу перед выдиранием кода страницы и всё что мне нужно !
     
  20. #colorblind

    #colorblind Moderator

    Joined:
    31 Jan 2014
    Messages:
    634
    Likes Received:
    246
    Reputations:
    42
    выдача отличается из-за того, что кукисы гуглослежки отсутствуют при подаче запроса. Попробуй на чистом браузере проверить выдачу в гугле и через программу, должно будет совпасть.
     
    binarymaster likes this.