![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
|
Добрый вечер.
Была одна программка, работала как положено, но буквально 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;При попытке запустить выводит ошибку: Цитата:
Суть программы в том что она формирует запрос на сервер vk: И получаем вот такую строку, которую потом разбираем: Цитата:
Танцы с бубном в виде Код:
IdHTTP1.HandleRedirects:= True; Есть шанс вновь заставить работать сию процедуру? Уже 3 дня голову ломаю. В гугле все перерыл - из предложенных вариантов для решения этой проблемы ничего не подошло. |
|
#2
|
||||
|
||||
|
302 перенаправление идет на https://api.vk.com/api.php?oauth=1&m...0&fie lds=sex TIdHTTP без бубна не умеет работать с этим протоколом https. В отличии от WinHTTP.
|
| Этот пользователь сказал Спасибо NumLock за это полезное сообщение: | ||
Speech (01.12.2016)
| ||
|
#3
|
||||
|
||||
|
Поскольку бесплатной WinHTTP я не нашел, а проект мой не коммерческий, то пришлось дальше заниматься секасом с Indy.
Итак, может у кого вдруг еще будет подобная ошибка, то вот ее решение. В дополнение к IdHTTP на форму нужно положить TIdSSLIOHandlerSocket. В IdHTTP в свойствах IOHandler выбрать TIdSSLIOHandlerSocket1. Скачать библиотеки libeay32.dll и ssleay32.dll, положить их в папку с проектом (exe-файлом). В Properties TIdSSLIOHandlerSocket в поле SSLOptions - > Method выбрать sslvTLSv1. И все - все заработало! Также прикрепляю готовый пример проекта. |
|
#4
|
||||
|
||||
|
Цитата:
Дак это классика. Всегда так делается для работы с openssl. |
| Этот пользователь сказал Спасибо M.A.D.M.A.N. за это полезное сообщение: | ||
ApxaHGe1 (06.03.2017)
| ||
|
#5
|
|||
|
|||
|
Мэд, не что бы человека похвалить за то, что сам разобрался... надо обязательно "об тэйбл".
Speech, маладца. |
| Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
Speech (04.12.2016)
| ||
|
#6
|
||||
|
||||
|
Цитата:
|
|
#7
|
||||
|
||||
|
Поскольку раньше никогда не имел дела с WinHTTP, и когда стал искать по нем информацию, то оказалось что этой информации не так уж и много. И когда наткнулся на ценник, то логично понял и скудную информацию в сети (платные потому что).
Наверно наткнулся на неудачный сайт ![]() |
|
#8
|
||||
|
||||
|
Необходимая и достаточная информация есть во 2-ом сообщении, по ссылке на официальный сайт. Все остальное второстепенно.
|