Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Интернет и сети
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 01.12.2016, 16:14
Аватар для Speech
Speech Speech вне форума
Новичок
 
Регистрация: 16.02.2012
Сообщения: 55
Репутация: 10
По умолчанию Ошибка HTTP/1.1 302 Found в IdHTTP

Добрый вечер.
Была одна программка, работала как положено, но буквально 3 дня назад вдруг появилась ошибка.
Суть программы в том чтобы рассортировать в контакте мальчиков и девочек.
Для наглядности были взяты случайные id пользователей контакта.
Итак, все по порядку.
Сам код программы (ниже добавил вырезку из проекта):

Код:
procedure MoveSex(Sex: integer);
var
  Data1, Data2 : string;
  x, PosSex    : integer;
begin
  For x := Form1.ListBox1.Items.Count-1 DownTo 0 Do
    begin
      Application.ProcessMessages;
      Data2:= Form1.ListBox1.Items[x];
      Delete(Data2, 1, Pos('/id', Data2) + 2);
      Data1:= Form1.idHTTP1.Get('http://api.vk.com/method/getProfiles?uid=' + Data2 + '&fields=sex');

      if Data1 <> '' then
        begin
          PosSex:= Pos('"sex":', Data1);

          if StrToInt(Copy(Data1, PosSex + 6, 1)) = Sex then
            begin
              Form1.ListBox2.Items.Add(Form1.ListBox1.Items[x]);
              Form1.ListBox1.Items.Delete(x);
            end;
        end;
    end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  MoveSex(2);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  MoveSex(1);
end;

При попытке запустить выводит ошибку:
Цитата:
---------------------------
Debugger Exception Notification
---------------------------
Project Project1.exe raised exception class EIdHTTPProtocolException with message 'HTTP/1.1 302 Found'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------

Суть программы в том что она формирует запрос на сервер vk:

И получаем вот такую строку, которую потом разбираем:
Цитата:
{"response":[{"uid":8807280,"first_name":"Александр","last_name ":"Турушев","sex":2}]}

Танцы с бубном в виде
Код:
IdHTTP1.HandleRedirects:= True;
не помогли.

Есть шанс вновь заставить работать сию процедуру? Уже 3 дня голову ломаю. В гугле все перерыл - из предложенных вариантов для решения этой проблемы ничего не подошло.
Изображения
Тип файла: jpg Error_idhttp1.jpg (32.1 Кбайт, 6 просмотров)
Вложения
Тип файла: rar Sex.rar (5.7 Кбайт, 6 просмотров)
Ответить с цитированием
  #2  
Старый 01.12.2016, 18:17
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

302 перенаправление идет на https://api.vk.com/api.php?oauth=1&m...0&fie lds=sex TIdHTTP без бубна не умеет работать с этим протоколом https. В отличии от WinHTTP.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Этот пользователь сказал Спасибо NumLock за это полезное сообщение:
Speech (01.12.2016)
  #3  
Старый 03.12.2016, 14:19
Аватар для Speech
Speech Speech вне форума
Новичок
 
Регистрация: 16.02.2012
Сообщения: 55
Репутация: 10
По умолчанию

Поскольку бесплатной WinHTTP я не нашел, а проект мой не коммерческий, то пришлось дальше заниматься секасом с Indy.

Итак, может у кого вдруг еще будет подобная ошибка, то вот ее решение.

В дополнение к IdHTTP на форму нужно положить TIdSSLIOHandlerSocket. В IdHTTP в свойствах IOHandler выбрать TIdSSLIOHandlerSocket1. Скачать библиотеки libeay32.dll и ssleay32.dll, положить их в папку с проектом (exe-файлом).
В Properties TIdSSLIOHandlerSocket в поле SSLOptions - > Method выбрать sslvTLSv1.

И все - все заработало!

Также прикрепляю готовый пример проекта.
Вложения
Тип файла: rar Sex.rar (304.3 Кбайт, 19 просмотров)
Ответить с цитированием
  #4  
Старый 03.12.2016, 22:34
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Цитата:
Сообщение от Speech
Поскольку бесплатной WinHTTP я не нашел, а проект мой не коммерческий, то пришлось дальше заниматься секасом с Indy.

Итак, может у кого вдруг еще будет подобная ошибка, то вот ее решение.

В дополнение к IdHTTP на форму нужно положить TIdSSLIOHandlerSocket. В IdHTTP в свойствах IOHandler выбрать TIdSSLIOHandlerSocket1. Скачать библиотеки libeay32.dll и ssleay32.dll, положить их в папку с проектом (exe-файлом).
В Properties TIdSSLIOHandlerSocket в поле SSLOptions - > Method выбрать sslvTLSv1.

И все - все заработало!

Также прикрепляю готовый пример проекта.

Дак это классика. Всегда так делается для работы с openssl.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
Этот пользователь сказал Спасибо M.A.D.M.A.N. за это полезное сообщение:
ApxaHGe1 (06.03.2017)
  #5  
Старый 03.12.2016, 23:53
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,004
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Мэд, не что бы человека похвалить за то, что сам разобрался... надо обязательно "об тэйбл".
Speech, маладца.
Ответить с цитированием
Этот пользователь сказал Спасибо lmikle за это полезное сообщение:
Speech (04.12.2016)
  #6  
Старый 04.12.2016, 07:59
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Цитата:
Сообщение от Speech
Поскольку бесплатной WinHTTP я не нашел
WinHTTP это часть Windows, поэтому ее использование абсолютно бесплатное, как и GDI+. Про Indy и SSL (TIdSSLIOHandlerSocket) тоже очень много писали на форуме и не найти бесплатно было бы странным.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #7  
Старый 04.12.2016, 16:01
Аватар для Speech
Speech Speech вне форума
Новичок
 
Регистрация: 16.02.2012
Сообщения: 55
Репутация: 10
По умолчанию

Поскольку раньше никогда не имел дела с WinHTTP, и когда стал искать по нем информацию, то оказалось что этой информации не так уж и много. И когда наткнулся на ценник, то логично понял и скудную информацию в сети (платные потому что).
Наверно наткнулся на неудачный сайт
Ответить с цитированием
  #8  
Старый 04.12.2016, 17:03
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Необходимая и достаточная информация есть во 2-ом сообщении, по ссылке на официальный сайт. Все остальное второстепенно.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 11:05.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter