idHTTP + IOHandler
столкнулся с траблой. Кусок кода, авторизация на сайте, везде работает, но на Windows 2012 server не хочет ни в какую, не проходит авторизацию.
Подскажите кто сталкивался или знает, куда копать? Кодировка, библиотеки indy пробовал.
Код:
TIdHTTP * Http = new TIdHTTP(NULL);
TIdSSLIOHandlerSocketOpenSSL * SSL = new TIdSSLIOHandlerSocketOpenSSL(NULL);
TIdCookieManager * Cookie = new TIdCookieManager(NULL);
String login = log;
String pass = log;
login.Delete(login.Pos(":"),login.Length());
pass.Delete(1,pass.Pos(":"));
Http->IOHandler=SSL;
Http->CookieManager=Cookie;
TStringList * Data = new TStringList();
TStringList * HTML = new TStringList();
TStringList * New_Msg = new TStringList();
TStringList * Bans = new TStringList();
Http->HandleRedirects=true;
Data->Add("login="+login);
Data->Add("password="+pass);
Data->Add("mode=login");
Data->Add("from=mail");
Data->Add("redirect=http://блаблабла/");
Data->Add("force=1");
Http->Request->Host="бла бла бла";
Http->Request->UserAgent="Mozilla/5.0 (Windows NT 6.3; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0";
Http->Request->Accept="text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
Http->Request->AcceptLanguage="ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3";
Http->Request->Referer="блаблабла";
try{
Http->Post("https://passport.блаблабла/",Data);
}catch(...){
TIdSSLIOHandlerSocketOpenSSL * SSL = new TIdSSLIOHandlerSocketOpenSSL(NULL);
TIdCookieManager * Cookie = new TIdCookieManager(NULL);
String login = log;
String pass = log;
login.Delete(login.Pos(":"),login.Length());
pass.Delete(1,pass.Pos(":"));
Http->IOHandler=SSL;
Http->CookieManager=Cookie;
TStringList * Data = new TStringList();
TStringList * HTML = new TStringList();
TStringList * New_Msg = new TStringList();
TStringList * Bans = new TStringList();
Http->HandleRedirects=true;
Data->Add("login="+login);
Data->Add("password="+pass);
Data->Add("mode=login");
Data->Add("from=mail");
Data->Add("redirect=http://блаблабла/");
Data->Add("force=1");
Http->Request->Host="бла бла бла";
Http->Request->UserAgent="Mozilla/5.0 (Windows NT 6.3; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0";
Http->Request->Accept="text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
Http->Request->AcceptLanguage="ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3";
Http->Request->Referer="блаблабла";
try{
Http->Post("https://passport.блаблабла/",Data);
}catch(...){
stackowerflow челу похоже помог совет:
С подобной проблемой на
You really should upgrade to a modern Indy 10 release, and then you can use the latest OpenSSL DLLs that are available in Fulgan's SSL main folder.
У него была версия Indy 10.0.52 и он пробовал те-же библиотеки.
В конце пишет:
Видимо заработало после апгрейда.
Новую версию берите и инструкцию.
я использую только латиницу.
А чем можно у проги перехватить POST запрос? Каким инструментом? Хочу сравнить отправляемые данные.
Цитата: Patr1ot
я использую только латиницу.
Извиняюсь, но странная латиница:
Http->Request->Referer="блаблабла";
:)
Ладно, понял, что там у вас реальные данные вместо блаблабла.
Не может Utf-8 быть в 2012 сервере?
эти "блаблабла" просто скрыл реальный адрес вот и все)) На самом деле там латиницей адрес указан. НЕ В ДОМЕНЕ РФ)
Пробовал конвентировать в Utf-8 результат тот же. Под любой другой версией нормально логинется, на 2012 серваке не хочет логинеться и все, чето в данных POST запроса не то, надо подсмотреть не знаю софта, чтоб свой exe выбрал и глянул че он шлет.
Перехватил HTTP Debuggerом, как так только не понимаю, на моем компе показывает верно, метод POST и инфа вся есть, а на 2012 серваке определяется как метод GET и отправляемых параметров в нет
отловил exception выдает "Cloud not ssl library" ))) где взять библиотеку под Windows server 2012 ?
система Windows Server 2012 R2 Standart 64x
Файлы ложу рядом с exe, может их подгружать надо?
у меня версия 10.5.9.0. не хочется до 11 обновляться. времени и так нету уже, да еще и обновляться то как то через костыли надо)
блин нашел наконецто http://qc.embarcadero.com/wc/qcmain.aspx?d=108937 я библиотеки качал под разрядность винда, а надобыло под разрядность моей проги, хоть я ее и на 64x запускаю, скомпилена то она под 32x
Всем спасибо
Я удалил пару своих комментариев по поводу кодировок -- раз дело не в них, то решил почистить от лишнего тему (не удалял те, на которые мне вы ответили).