Конференция "Сети" » Synapse + Instagram API. Не уходят GET/POST-запросы [D7]
 
  • olegstepp © (20.11.14 23:11) [0]
    Добрый день!
    Не могу понять в чем проблема. Не уходят запросы, программа 'подвисает' на некоторое время, после чего тишина.

    http:=THTTPSend.Create;
    http.HTTPMethod('GET', 'https://api.instagram.com/v1/users/search?q=Jack&access_token='+token);
    mmo1.Lines.LoadFromStream(http.Document);



    Таким же образом отлично поработал с VK Api, проблем не возникало. Сталкивался ли кто-нибудь с этим ?
  • junglecat © (21.11.14 10:38) [1]
    что в http.ResultCode?
  • olegstepp © (21.11.14 11:04) [2]
    После 3х минутного ожидания в http.ResultCode 0
  • junglecat © (21.11.14 11:17) [3]
    а через браузер этот урл (с токеном) открывается?
  • olegstepp © (21.11.14 11:20) [4]
    Да, открывается без проблем.
  • junglecat © (21.11.14 11:36) [5]
    а vk тоже по https? т.е. ssl_openssl.pas включен?
  • olegstepp © (21.11.14 11:38) [6]
    Да, все так же. Вроде бы принципы идентичные, однако уперся в тупик.
  • junglecat © (21.11.14 12:01) [7]
    возможно инстаграму каких-то заголовков не хватает.
    он в Headers что-нить возвращает?
  • junglecat © (21.11.14 12:03) [8]
    посмотри, какие заголовки ставит браузер, и попробуй подставить такие же
  • olegstepp © (21.11.14 16:00) [9]
    Что именно из этого нужно ? и подскажите, пожалуйста, как это описать

    https://pp.vk.me/c605816/v605816904/20f6d/vKRS4aLd_m0.jpg
  • junglecat © (21.11.14 16:14) [10]
    наверно как-то так
    http.Headers.Add('accept-encoding: gzip,deflate,sdch');
    ...
  • DVM © (21.11.14 17:02) [11]

    > junglecat ©   (21.11.14 16:14) [10]
    > наверно как-то так
    > http.Headers.Add('accept-encoding: gzip,deflate,sdch');

    ну клиент не обязан поддерживать сжатие, соответственно сервер вряд ли откажет такому клиенту.


    > olegstepp ©   (21.11.14 16:00) [9]
    > Что именно из этого нужно ?

    Там у тебя в куках прорва инфы, ты бы куки сначала все почистил для этого адреса, а потом эксперимент ставил с браузером.
  • olegstepp © (21.11.14 17:29) [12]
    Спасибо. Зачистил.

    http://i257.photobucket.com/albums/hh224/oleg_stepp/livejournal/headers_zpsa8055878.jpg

    http:=THTTPSend.Create;
    http.Headers.Add('user-agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36');
    http.Headers.Add('accept-encoding: gzip,deflate,sdch');
    http.Headers.Add('cache-control: max-age=0');
    http.Headers.Add('accept-language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4,es;q=0.2,pt;q=0.2');
    http.Headers.Add('accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8');
    http.HTTPMethod('GET', 'https://api.instagram.com/v1/users/search?q=jack&access_token='+token);
    mmo1.Lines.LoadFromStream(http.Document);



    Не помогает.
  • DVM © (21.11.14 17:40) [13]

    > olegstepp ©   (21.11.14 17:29) [12]

    Возможно проблема в SSL/TLS. Если сервер набор вариантов шифрования/ключевого обмена/хэширования которые не поддерживаются клиентом, то соединение не установится просто и все. Надо посмотреть, как выглядит процесс рукопожатия клиента и сервера. Сними дамп соединения твоей программы с сервером с помощью Wireshark и погляди или выложи куда нибудь я погляжу.
  • DVM © (21.11.14 17:41) [14]

    > Если сервер набор вариантов

    Если сервер предлагает набор вариантов
  • DVM © (21.11.14 17:43) [15]

    > olegstepp ©   (21.11.14 17:29) [12]

    Еще, как вариант, может происходить редирект куда нибудь и уже оттуда отдаются данные, твой THTTPSend редиректы обрабатывает? А куки поддерживает, они разрешены в нем?
    Версия HTTP какая при соединении шлется?
  • olegstepp © (22.11.14 11:17) [16]

    > твой THTTPSend редиректы обрабатывает? А куки поддерживает,
    >  они разрешены в нем?

    Не знаю. Все действия по кнопке описаны выше, другого кода в программе нет.
    Пытаюсь разобраться и понять что к чему.
  • junglecat © (22.11.14 12:29) [17]
    http.Protocol := '1.1'?
  • olegstepp © (23.11.14 12:24) [18]
    Пока так.

     http:=THTTPSend.Create;
     http.Protocol:='1.1';
     http.Headers.Add('User-agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36');
     http.Headers.Add('Accept-encoding: gzip,deflate,sdch');
     http.Headers.Add('Cache-control: max-age=0');
     http.Headers.Add('Accept-language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4,es;q=0.2,pt;q=0.2');
     http.Headers.Add('Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8');
    //  http.MimeType:='application/json;';
     http.HTTPMethod('GET', 'https://api.instagram.com/v1/users/search?q=jack&access_token='+token);
     mmo1.Lines.LoadFromStream(http.Document);



    А как обработать редиректы ? и куки
  • DVM © (23.11.14 19:02) [19]

    > olegstepp ©   (23.11.14 12:24) [18]

    1) Cними дампы с помощью Wireshark отдельно для браузера и твоей программы проверим, все ли нормально с SSL/TLS. Правда в дампах мы не увидим содержимого, но увидим SSL Handshake.

    2) Взять Fiddler и посмотреть что реально передает браузер внутри SSL/TLS. Также желательно добиться, чтобы твоя программа заработала с Fiddler (по умолчанию она не пойдет через него, т.к. он как прокси выступает). Посмотреть, что шлет программа.

    3) Сравнить. Или выложить сюда. А так гадаем на кофейной гуще.

    Особенно 1) пункт интересен.
 
Конференция "Сети" » Synapse + Instagram API. Не уходят GET/POST-запросы [D7]
Есть новые Нет новых   [118656   +18][b:0][p:0.002]