Конференция "Сети" » THTTPSend и HTTPS (synapse) - D2010 [WinXP]
 
  • Besenok (17.11.12 00:56) [0]
    Доброго времени суток.
    Возникла проблема с прохождением авторизации на сайте ekinobilet.ru для загрузки\получения данных.

    Использую synapse HTTPSend. Подключение делаю следующим образом:

    uses ....., HTTPSend, ssl_openssl;
    ....
    procedure TForm1.Button1Click(Sender: TObject);
    Const
     CRLF = #13#10;
     URL='https://ekinobilet.ru/ekbs/upload.aspx';
    var
     HTTP: THTTPSend;
     TS:TStringStream;

    begin
    try
       HTTP := THTTPSend.Create;
       TS:= TStringStream.Create;

       {Определяем Contetn-Type запроса}
       HTTP.Protocol:='1.1';
       HTTP.UserAgent:='Synapse';
       HTTP.TargetHost:= 'ekinobilet.ru';
       HTTP.KeepAlive:= true;
       HTTP.MimeType := 'multipart/form-data, boundary='+edBoundary.Text;
    // Content
       TS.WriteString('----'+edBoundary.Text + CRLF);
       TS.WriteString('Content-Disposition: form-data; name=\"login\";  '+ CRLF);
       TS.WriteString(CRLF);
       TS.WriteString(Edit1.Text + CRLF);
       TS.WriteString('----'+edBoundary.Text + CRLF);
       TS.WriteString('Content-Disposition: form-data; name=\"passwd\"; '+ CRLF);
       TS.WriteString(CRLF);
       TS.WriteString(Edit2.Text + CRLF);
       TS.WriteString('----'+edBoundary.Text + CRLF);
       TS.WriteString('Content-Disposition: form-data; name=\"get\" '+ CRLF);
       TS.WriteString(CRLF);
       TS.WriteString('list'+ CRLF);
       TS.WriteString('----'+edBoundary.Text+'--' + CRLF);
    {    TS.WriteString('----'+edBoundary.Text + CRLF);
       TS.WriteString('Content-Disposition: form-data; name=\"login\";  '+ CRLF);
       TS.WriteString(CRLF);
       TS.WriteString(Edit1.Text + CRLF);
       TS.WriteString('----'+edBoundary.Text + CRLF);
       TS.WriteString('Content-Disposition: form-data; name=\"passwd\"; '+ CRLF);
       TS.WriteString(CRLF);
       TS.WriteString(Edit2.Text + CRLF);
       TS.WriteString('----'+edBoundary.Text + CRLF);
       TS.WriteString('Content-Disposition: form-data; name=\"get\" '+ CRLF);
       TS.WriteString(CRLF);
       TS.WriteString('list'+ CRLF);
       TS.WriteString('----'+edBoundary.Text+'--' + CRLF); }

       HTTP.Document.LoadFromStream(TS);

       // Отправляем запрос
       if HTTP.HTTPMethod('POST', URL) then begin
       Memo1.Lines.AddStrings(HTTP.Headers);
         Memo1.Lines.LoadFromStream(HTTP.Document);
       end;
       Memo2.Lines.Add(inttostr(HTTP.ResultCode));
       Memo2.Lines.Add(HTTP.ResultString);
     finally
       TS.Free;
       HTTP.Free;
     end;


    Результатом при правильном логин\пароле должен прийти ответ
    в виде


    <?xml version="1.0" encoding="utf-8"?>
    <list count="0" size="0">

    </list>



    Подскажите, что я не так делаю.
    Заранее благодарен.
  • Besenok (17.11.12 01:04) [1]
    Пропустил....
     При указанном выше коде, что правильные логин\пасс, что нет все время выдается ошибка: неверный логин\пароль.
  • Besenok (19.11.12 11:49) [2]
    Неужто никто не может подсказать?
  • Медвежонок Пятачок © (19.11.12 12:57) [3]
    Подсказываю.
    Несмотря на то, что в эдитах может лежать правильный логин и пароль, на сервер могут уходить неправильные логин и пароль.
    Что собственно и происходит.
    И о чем собственно тебе сервер и говорит человеческим голосом.
  • DVM © (19.11.12 16:58) [4]
    synapse очень плохо совместим с Unicode версиями Delphi, вполне вероятно что там где то что-то неправильно передается.
  • Besenok (22.11.12 07:24) [5]
    Вопрос решил через Indy 10.5.9 4797 (хоть и не люблю я Indy)
 
Конференция "Сети" » THTTPSend и HTTPS (synapse) - D2010 [WinXP]
Есть новые Нет новых   [119157   +55][b:0][p:0.002]