![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Всем здравия!
Пишу не большую программку для личного использования столкнул с первой проблемой на первом шаге, на шаге авторизации в вк. Все параметры всё правильно собирается и отправляется методом POST получаю код редиректа 302 В idhttp.Response.Location находится заветная ссылка по которой если перейти авторизуешься в вк, я пробовал получил ссылку в Memo она такого вида https://m.vk.com/login?role=fast&to=&s=1&__q_hash=(тут md5_hash судя по виду) вставлял этот линк в браузер и переходил на свою страницу авторизованным это меня удивило... Но когда я Код:
try
IdHTTP.HandleRedirects:= false;
IdHTTP.Post('https://login.vk.com/', post);
except
if (idHTTP.Response.ResponseText='HTTP/1.1 302 Found') then //Если сервер ответил нам редиректом то
sleep(1000);
url:= idhttp.Response.Location ; // Достаем адрес редиректа из заголовка ответа сервера
idhttp.HandleRedirects:= true; // Включаем авторедирект
if pos('Выход',idhttp.Get(url))>0 then // Если на странице есть слово Выход то авторизация удалась
memo1.Text:= 'OK';lmikle: пользуемся тегами Мне прога пишет Socket Error #0 Перепробовал массу способов не могу разобраться, остаётся только переходить на Synapse если не получится с Indy, только с Synapse вообще не работал. Версия Indy 10.5.5 искал свежее не нашёл... Библиотеки libeay32.dll и ssleay32 лежат рядом с прогой какая версия не помню, пробовал разные скачивать все выдавали ошибку точка входа не найдена что то такое, может быть в них проблема я хз, подскажите в чём может быть дело Последний раз редактировалось lmikle, 22.02.2017 в 20:31. |
|
#2
|
||||
|
||||
|
Вашей реализации не вижу, но насколько знаю, мало того что библиотеки рядом лежат. Я конечно не специалист в инди, но разок пришлось решать. Вот пример из рабочего проекта (правда тут отправка почты, но не суть - главное ssl).
Код:
...
id_SMTP := TIdSMTP.Create;
id_SMTP.Host := 'smtp.yandex.ru';
id_SMTP.Port := 25;
.....
id_SSL := TIdSSLIOHandlerSocketOpenSSL.Create;
id_SSL.Destination := id_SMTP.Host + ':' + IntToStr(id_SMTP.Port);
id_SSL.Host := id_SMTP.Host;
id_SSL.Port := id_SMTP.Port;
id_SSL.DefaultPort := 0;
id_SSL.SSLOptions.Method := sslvSSLv23;
id_SSL.SSLOptions.Mode := sslmUnassigned;
id_SMTP.IOHandler := id_SSL;
id_SMTP.UseTLS := utUseExplicitTLS;
...
try
id_SMTP.Connect;
if id_SMTP.Connected then
id_SMTP.Send(id_MSG);
id_SMTP.Disconnect;
except
...
end;
...
id_SMTP.Free;
id_SSL.Free; |
|
#3
|
|||
|
|||
|
SSL работает нормально иначе я бы не смог спарсить страницу чтобы собрать нужны данные для отправки запроса и POST запрос на https отправляется правильно, но не получается сделать редирект по ссылке которая находится в idhttp.Response.Location, кстати ставил на форму tWebBrowser загружал в него ссылку из idhttp.Response.Location и мне показывалась страница моего авторизованного аккаунта, я думаю что ошибка именно в
url:= idhttp.Response.Location; idhttp.HandleRedirects:= true; idhttp.Get(url); |
|
#4
|
||||
|
||||
|
Тогда извиняюсь за неуместный ответ. К сожалению ничем теоретическим помочь не могу. С практической точки зрения - нужно либо смотреть Ваш исходник, либо сделать свои наброски, что уже лень.
|
|
#5
|
|||
|
|||
|
Проблема решилась путём обновления indy
|
|
#6
|
|||
|
|||
|
Ну, ты бы линк на найденную версию выложил бы что-ли...
И номер версии... |
| Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
ApxaHGe1 (24.02.2017)
| ||
|
#7
|
|||
|
|||
|
Цитата:
Я не смог найти отдельно либу indy пришлось скачивать более свежую сборку "Delphi 10 Seattle"(ссылку наверно не стоит выкладывать на сборку...), делфи 2010 по сравнению с этой просто кроха... Тут версия indy 10.6.2.5298 - всё работает на ура Единственная загадка всё ни как не пойму, тот первый проект был создан в делфи 2010, я загрузил его в делфи 10 Seattle и инди автоматом обновилось, т.е. я без какого либо редактирования кода сразу скомпилировал приложение запустил и всё успешно сработало. (вес приложения был 3100 кб) Чуть позже через пару дней я создал новый проект и тот же самый код перетащил в проект созданный на делфи 10 Seattle + убрал много не нужного мусора скомпилировал прогу и она стала весить 15 мб! В чём дело из за чего такое, uses одинаковый в обоих проектах разная только icon в прогах, но не может же она столько весить))) Может кто скажет что можно попробовать чтобы размер стал меньше? (советы типа упаковать в UPX и подобное не надо, знаю ) |
|
#8
|
||||
|
||||
|
Debug на Release измени. Build conf.
|
|
#9
|
|||
|
|||
|
Цитата:
Да всё ок, теперь приложение почти в 4 раз легче чем до этого А я думаю нафига оно столько папок создало рядом с исходниками ![]() |