idHTTP.GET или idHTTP.POST

Тема в разделе "Delphi - Компоненты", создана пользователем -, 9 июн 2004.

Статус темы:
Закрыта.
  1. Гость

    С помощью idHTTP.GET или idHTTP.POST пытаюсь организовать несколько потоков, а именно:
    необходимо отправить данные в несколько скриптов и получить результат сразу с нескольких страничек.
    У меня получается что idHTTP.GET или idHTTP.POST выполняются последовательно, т.е. пока idHTTP1 не закончит работу idHTTP2 не отправляет запрос и т.д.
     
  2. CzR

    CzR Гость

    Ну ты блин даешь человек =)) А ты класс TThread юзал?? И вообще, в многопоточных прогах.... если необходимо держать их более 30, то советую не использовать компоненты Indy - это глючная хрень!! Прога будет ужасно глючить и тормозить! Надо писать самому.. на сокетах.... либо юзать высокоуровневый WinInet АПИ, либо найти в нете класс реализующий протокол TCP и на основе его делать нужные ХТТП запросы! Хех)
     
  3. CzR

    CzR Гость

    А без параллельных потоков (класс TThread) ты не сможешь сделать то что хочешь, т.к. ИНДИ не поддерживает н*цензура*кирующие сокеты!
     
  4. Guest

    Guest Гость

  5. Гость

    Есть вебформа <form action="logon.php" method="post"> состоящая из следующих полей:

    Код (Text):
    <input class="post" type="text" name="username" tabindex="1" />
    <input class="post" type="password" name="password" tabindex="2" />
    <input class="text" type="checkbox" name="autologin" tabindex="3" />
    <input type="submit" class="mainoption" name="login" value="Вход" tabindex="4" />
    Поручили создать простейшее приложение автоматического залогинивания. Поместив на форму экземпляр компонента IdHTTP, назначил следующий обработчик для кнопки:

    Код (Text):
    procedure TForm1.Button1Click(Sender: TObject);
    var
    LoginInfo: TStrings;
    Response: TStringStream;
    begin
    LoginInfo := TStringList.Create;
    Response := TStringStream.Create('');
     LoginInfo.Clear;
     LoginInfo.Add('username=MyName');
     LoginInfo.Add('password=MyPass');
     IdHTTP1.Post('http://mywebsite.xxx/login.php',LoginInfo,Response);
     showmessage(Response.DataString);
    Response.Free;
    LoginInfo.Free;
    end;
    Однако, после подключения к серверу программа выдает исключение “Invalide argument to date encode”. Что не так? Delphi 6.0.
     
  6. DZX

    DZX Гость

    Indy в потоках глючит ого-го, проходили,
    и отслеживать и убивать зависшие потоки пробывал, все одно особого толку не вышло.
     
  7. Barmutik

    Barmutik Гость

    Инди вещь глючная .. построить на ней что-то стоящее сложно .. НО МОЖНО ...

    Мы выходили из этой ситуации запуском и менеджментом процессов с откачками...
     
  8. Гость

    Инет-программирование – не мой профиль, поэтому судить о глючности Индии-компонентов не берусь. Но ситуация кардинально изменилась после установки Delphi 7:

    Код (Text):
    procedure TForm1.Button1Click(Sender: TObject);
    var
    data: TIdMultiPartFormDataStream;
    begin
    data := TIdMultiPartFormDataStream.Create;
    data.AddFormField('username', 'MyName');
    data.AddFormField('password', 'MyPass');
    Memo1.Lines.Text := IdHTTP1.Post('http://MyServer.xxx/login.php',data);
    data.Free;
    end;
    В компонент Memo принимается HTML-код страницы, возвращаемой скриптом login.php. Проблема в том, что скрипту необходимо отправлять значение еще одного поля – login. Фактически, это кнопка c надписью «Вход» – браузер еще дописывает &login=%D0%92%D1%85%D0%BE%D0%B4. Если изменить название кнопки – параметр login кодируется по-иному. Может подскажите, алгоритм или функцию кодирования?
     
  9. DZX

    DZX Гость

    А если дописать в строку запроса &login=%D0%92%D1%85%D0%BE%D0%B4 не работает?
    Кстати в 7-ом используется 9-я версия компонентов можно скачать из инета последнию 10-ю и проставить. В 10-й версии уже стоят 10-ые компоненты.
     
  10. Гость

    Для: DZX

    2 особенности:
    - дописывать нельзя, т.к. параметры передаются методом POST, а не GET.
    - добавление параметра login и его значение в виде
    data.AddFormField(‘login’, ‘%D0%92%D1%85%D0%BE%D0%B4’);
    провоцирует ошибку на этапе инициализации параметра до подключения к серверу.
     
  11. Гость

    И еще такой вопрос. Логинюсь на сервер посредством своей программы… в случае неверного пароля, скрипт возвращает соответствующую HTML-стрницу, исходный код которой я анализирую для проверки успешности залогинивания. В случае успешной аутентификации скрипт также возвращает HTML-код, но на этапе передачи принятых данных DataString в Memo происходит ошибка: rised exeption class EIdHTTPProtocolException 'HTTP/1.1 302 Found’. Process Stopped.

    IdHTTP1.Post('http://мойсервер/login.php', ParamData, PostDataStream);
    Memo1.Text:=PostDataStream.DataString;

    Что это за ошибка и как правильно принять DataString или хотя бы обработать это исключение?
     
  12. DZX

    DZX Гость

    Что то мне подсказывает что дописать всетаки можно. Можно Post с Get совместить таким образом. Для того что бы разобрать ся надо разобрать по запчастям реальную форму которая постит, и сделать так же.
    По ошибке первым делом нано узнать в что означает 302 ошибка протокола, а потом думать почему.
    Обойти ошибку в лоб можно, но можно ли будет после этого коректно сотрудничаь далее с сервером, вопрос...
     
  13. Гость

    IdHTTP1.HandleRedirects := True;
    И боль прошла!!! :angry:
     
  14. DZX

    DZX Гость

    Ну вот все не так плохо :angry:
     
  15. SH2008

    SH2008 Гость

    Джангл Виталий
    так какой в итоге получился код, напиши, есть схожие проблемы
     
  16. Rust

    Rust Гость

    У меня похожий вопрос, уже нигде неделю немогу найти ответ. Мне нужно отправить post php скрипту после попытки отправить сервер выдает ошибку типа переменные неопределенны, тоесть запрос то происходит а переменные никак не отправляются
     
Загрузка...
Похожие Темы - idHTTP GET или
  1. Shouldercannon
    Ответов:
    0
    Просмотров:
    570
  2. slavon-x86
    Ответов:
    5
    Просмотров:
    5.099
  3. s2dent
    Ответов:
    0
    Просмотров:
    3.528
  4. slavon-x86
    Ответов:
    7
    Просмотров:
    8.057
  5. kuklofon
    Ответов:
    0
    Просмотров:
    139
Статус темы:
Закрыта.

Поделиться этой страницей