Где косяк?
, Отправка данных POST (https)
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.217.172] |
|
|
Соблюдайте общие правила форума
MSDN Library
FAQ раздела
Поиск по разделу
Как правильно задавать вопросы
Где косяк?
, Отправка данных POST (https)
|
Сообщ.
#1
,
|
|
|
|
Хочу заказать детализацию МегаФона через прогу.
Ссылка на сайт: http://lk.megafon.ru Логиниться научился ![]() ![]() ![]() Params.Clear; Params.Add('CSRF=специальный_идентификатор_генерируемый_сайтом')); Params.Add('j_username='+Login); Params.Add('j_password='+Password); HTTPPost(http, 'https://lk.megafon.ru/dologin/', Params) А вот отправку данных для получения детализации - НИКАК!!!! ![]() ![]() Params.Clear; Params.Add('SRTY_ID=51030003'); Params.Add('START_DATE=01.07.2014 00:00:00'); Params.Add('END_DATE=17.07.2014 23:32:16'); Params.Add('REPORT_START=01.07.2014 00:00:00'); Params.Add('REPORT_END=17.07.2014 23:32:16'); Params.Add('DLV_METHOD=2'); Params.Add('SPTP_ID=3'); Params.Add('RECIPIENT='+Email); Params.Add('SRDT_ID='+IntToStr(Format)); if MakeZip then S := '2' else S := ''; Params.Add('COMPRESS_TYPE='+S); Params.Add('COMPRESS_ZIP='+ZipPwd); Params.Add('P_UPD_DELIVERY='); // 1, если надо обновить e-mail (т.е. установить его по умолчанию) if SMS then S := 'Y' else S := ''; Params.Add('P_SMS_NOTE='+S); Params.Add('SUBS_ID_MULTI='); Params.Add('SMM='+Login); Params.Add('SUBS_IDS=3140968'); // Х/з что это Params.Add('PERSONAL_FLAG=0'); Params.Add('CODE_PERIOD=0'); Params.Add('YEAR_PERIOD='); Params.Add('SUBS_MSISDNS_ALL=0'); HTTPPost(http, 'https://'+http.Host+'/SCWWW/CALLS_MULTISUBS_ORDER_ACTION', Params); Чую подвох в том, что /SCWWW/CALLS_MULTISUBS_ORDER_ACTION - это не тот адрес... хотя Live HTTP Headers показывает именно его!!! Вот HTML перед отправкой... ![]() ![]() <form onsubmit="return cpOnSubmitForm(this,1);" id="CALLS_ORDER_CONFIRM" name="CALLS_ORDER_CONFIRM" method="POST" action="CALLS_MULTISUBS_ORDER_ACTION"> <div class="heading">Подтверждение:</div> <div class="group-info"><div class="top-left-inf"></div><div class="top-right-inf"></div><div class="inside-inf"> <div>Вы хотите заказать детализацию вызовов за период с 01.07.2014 по 18.07.2014 включительно.</div> <div>Доставить по электронной почте alt.a@mail.ru в формате HTML.</div> <div>Для абонентов:<br> <ul class="list-info"> <li>9277210000</li> </ul> </div> <div>Перед отправкой отчет будет помещен в архив.</div> </div><div class="bottom-left-inf"></div><div class="bottom-right-inf"></div></div> <input id="SRTY_ID" name="SRTY_ID" type="hidden" value="51030003"> <input name="START_DATE" type="hidden" value="01.07.2014 00:00:00"> <input name="END_DATE" type="hidden" value="18.07.2014 00:32:03"> <input name="REPORT_START" type="hidden" value="01.07.2014 00:00:00"> <input name="REPORT_END" type="hidden" value="18.07.2014 00:32:03"> <input name="DLV_METHOD" type="hidden" value="2"> <input name="SPTP_ID" type="hidden" value="3"> <input name="RECIPIENT" type="hidden" value="alt.a@mail.ru"> <input name="SRDT_ID" type="hidden" value="0"> <input name="COMPRESS_TYPE" type="hidden" value="2"> <input name="COMPRESS_ZIP" type="hidden" value=""> <input name="P_UPD_DELIVERY" type="hidden" value=""> <input name="P_SMS_NOTE" type="hidden" value=""> <input name="SUBS_ID_MULTI" type="hidden" value=""> <input name="SMM" type="hidden" value="9277210000"> <input name="SUBS_IDS" type="hidden" value="3140968"> <input name="PERSONAL_FLAG" type="hidden" value="0"> <input name="CODE_PERIOD" type="hidden" value="0"> <input name="YEAR_PERIOD" type="hidden" value=""> <input name="SUBS_MSISDNS_ALL" type="hidden" value="0"> <table border="0" cellpadding="0" cellspacing="0" class="tbl_width"> <tbody><tr> <td align="left"> <input xmlns:xalan="http://xml.apache.org/xalan" class="button_back" onmouseover="$(this).addClass('button_back-hover')" onmouseout="$(this).removeClass('button_back-hover')" value="Назад" type="button" onclick="cpPsixRequestHistory('CALLS_ORDER_FORM');" style=""></td><td align="right"> <input xmlns:xalan="http://xml.apache.org/xalan" class="button_forward" onmouseover="$(this).addClass('button_forward-hover')" onmouseout="$(this).removeClass('button_forward-hover')" value="Заказать" type="submit" onclick="return true;" style=""></td> </tr> </tbody></table> <div align="left"></div> </form> Вот заголовки (может, я TIdHTTP неправильно инициализирую...): ![]() ![]() {$APPTYPE CONSOLE} uses Windows, SysUtils, DateUtils, Classes, IdHTTP, IdSSLOpenSSL, IdSocks, IdCookieManager, AC; var MegafonCallsDetailsMsg: String; http: TIdHTTP; HTTPPage: String; HTTPResCode: Integer; HTTPResMsg: String; BeforeCaptchaProc: procedure(const Login: String); CaptchaAttempts: Integer = 5; LastCaptchaId: String; AntiGateAPIKey: String; const SGLink = 'https://lk.megafon.ru/'; mdfPDF = 7; // Результат в PDF mdfHTML = 0; // Результат в HTML mdfXLS = 5; // Результат в XLS procedure HTTPInitialize(var http: TIdHTTP); begin http := TIdHTTP.Create(nil); http.HandleRedirects := True; http.HTTPOptions := [hoForceEncodeParams]; with http.Request do begin Accept := 'text/html, */*'; // AcceptEncoding := 'gzip, deflate, sdch'; AcceptLanguage := 'ru'; AcceptCharSet := 'windows-1251, utf-8'; ContentType := 'application/x-www-form-urlencoded'; UserAgent := 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; YPC 3.0.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)'; // UserAgent := 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36'; CacheControl := 'no-cache'; Connection := 'keep-alive'; Referer := SGLink end; http.IOHandler := TIdSSLIOHandlerSocket.Create(http); with (http.IOHandler as TIdSSLIOHandlerSocket) do begin SocksInfo := TIdSocksInfo.Create(http); SSLOptions.Method := sslvTLSv1 end; http.CookieManager := TIdCookieManager.Create(http) end; function HTTPGet(var http: TIdHTTP; const Link: String): Boolean; begin if http = nil then HTTPInitialize(http); try HTTPPage := ''; HTTPPage := http.Get(Link); HTTPResMsg := http.ResponseText except on E: Exception do HTTPResMsg := E.Message end; HTTPResCode := http.ResponseCode; Result := (HTTPResCode = 200); if Result then http.Request.Referer := Link end; function HTTPPost(var http: TIdHTTP; const Link: String; Params: TStrings): Boolean; begin if http = nil then HTTPInitialize(http); try HTTPPage := ''; HTTPPage := http.Post(Link, Params); HTTPResMsg := http.ResponseText except on E: Exception do HTTPResMsg := E.Message end; HTTPResCode := http.ResponseCode; Result := (HTTPResCode = 200); if Result then http.Request.Referer := Link end; procedure HTTPFree(var http: TIdHTTP); begin FreeAndNil(http) end; Please, help!!! Добавлено Я уже измучался танцевать. И так, и сяк - ничего не получается!!! |
|
Сообщ.
#2
,
|
|
|
|
Джинкс, оформи свои проблемы через Личный Кабинет.
Лично мне программирование ради программирования всегда кажется извращением. Без сладострастия и совокупления етс... |
|
Сообщ.
#3
,
|
|
|
|
Это как раз-таки не программирование ради программирования.
Мне периодически нужно заказывать детализацию сразу с 6 номеров. И я уже устал каждый поочерёдно заходить в личный кабинет по 6 раз... |