|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Ошибка 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; При попытке запустить выводит ошибку: Цитата:
Суть программы в том что она формирует запрос на сервер 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. — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
Этот пользователь сказал Спасибо M.A.D.M.A.N. за это полезное сообщение: | ||
ApxaHGe1 (06.03.2017)
|
#5
|
|||
|
|||
Мэд, не что бы человека похвалить за то, что сам разобрался... надо обязательно "об тэйбл".
Speech, маладца. |
Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
Speech (04.12.2016)
|
#6
|
||||
|
||||
Цитата:
Пишу программы за еду. __________________ |
#7
|
||||
|
||||
Поскольку раньше никогда не имел дела с WinHTTP, и когда стал искать по нем информацию, то оказалось что этой информации не так уж и много. И когда наткнулся на ценник, то логично понял и скудную информацию в сети (платные потому что).
Наверно наткнулся на неудачный сайт |
#8
|
||||
|
||||
Необходимая и достаточная информация есть во 2-ом сообщении, по ссылке на официальный сайт. Все остальное второстепенно.
Пишу программы за еду. __________________ |