![]() |
|
|
Регистрация | << Правила форума >> | 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; Грамотно поставленный вопрос содержит не менее 50% ответа. Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть. |
#3
|
|||
|
|||
![]() SSL работает нормально иначе я бы не смог спарсить страницу чтобы собрать нужны данные для отправки запроса и POST запрос на https отправляется правильно, но не получается сделать редирект по ссылке которая находится в idhttp.Response.Location, кстати ставил на форму tWebBrowser загружал в него ссылку из idhttp.Response.Location и мне показывалась страница моего авторизованного аккаунта, я думаю что ошибка именно в
url:= idhttp.Response.Location; idhttp.HandleRedirects:= true; idhttp.Get(url); |
#4
|
||||
|
||||
![]() Тогда извиняюсь за неуместный ответ. К сожалению ничем теоретическим помочь не могу. С практической точки зрения - нужно либо смотреть Ваш исходник, либо сделать свои наброски, что уже лень.
Грамотно поставленный вопрос содержит не менее 50% ответа. Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть. |
#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 раз легче чем до этого ![]() А я думаю нафига оно столько папок создало рядом с исходниками ![]() |