Конференция "Сети" » 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) пункт интересен.
  • olegstepp © (25.11.14 17:27) [20]
    https://pp.vk.me/c622317/v622317904/ad9d/UYauR0VpbBw.jpg

    К сожалению, не понимаю в этом ничего. с 6 строчки.
    Фиддлер действительно не видно ничего.
  • olegstepp © (25.11.14 19:29) [21]
    IE при таком запросе предлагает открыть/сохранить search.json
  • DVM © (25.11.14 21:47) [22]

    > olegstepp ©   (25.11.14 17:27) [20]


    > К сожалению, не понимаю в этом ничего. с 6 строчки.

    1) Ты сам pcap файл куда нибудь положи. По скриншоту проблему искать то же что лечить по фотографии. Там же содержимого пакетов не видно.
    2) Это дамп соединения браузера или твоей программы? Хорошо бы и то и другое, но в отдельных файлах.
  • DVM © (25.11.14 21:53) [23]

    > olegstepp ©   (25.11.14 17:27) [20]

    Вообще по скриншоту видно, что TLS пакетов (TLS Application Data) от сервера не поступает. Т.е либо стороны не договорились насчет шифрования, либо оно неправильно работает либо запрос все же не отправляется. Нужен дамп.
  • DVM © (25.11.14 22:13) [24]

    > olegstepp ©   (25.11.14 17:27) [20]

    кстати, а запросы, которые не требуют access_token тоже не работают?
 
Конференция "Сети" » Synapse + Instagram API. Не уходят GET/POST-запросы [D7]
Есть новые Нет новых   [134427   +34][b:0.001][p:0.002]