TIdHTTPRequestInfo.FormParams в паре имя / значение - PullRequest
1 голос
/ 19 октября 2011

Я использую Indy10.Мой сервер обрабатывает форму сообщения. ARequestInfo.FormParams правильно содержит параметры неразобранной формы.Но ARequestInfo.Params.count равно 0. Есть ли способ получить ARequestInfo.Params с параметрами анализируемой формы?Или есть способ разобрать ARequestInfo.FormParams ?

Кажется, мне нужно написать свою собственную процедуру синтаксического анализа, когда это уже должно быть инкапсулировано в объект.Или, возможно, мне не хватает метода.

Обновление Делая еще кое-какие раскопки, которые я обнаружил, когда делал пост в нашей локальной сети, все работает нормально.Но когда сообщение выполняется из браузера за пределами нашей локальной сети, это не так.

1 Ответ

4 голосов
/ 20 октября 2011

Попробуйте установить для свойства ParseParams значение TIdHTTPServer.

. Или вы можете сделать потомком класса TIdHTTPRequestInfo для доступа к защищенному методу с именем DecodeAndSetParams для самостоятельного анализа параметров..

Вот пример.

uses
  IdCustomHTTPServer;

type
  THTTPRequest = class(TIdHTTPRequestInfo);

procedure TForm1.Button1Click(Sender: TObject);
var
  Request: THTTPRequest;
begin
  Request := THTTPRequest.Create;
  Request.DecodeAndSetParams('firstparam=1&secondparam=2&thirdparam=3');

  ShowMessage('Param count: ' + IntToStr(Request.Params.Count) +
              sLineBreak + sLineBreak +
              Request.Params[0] + sLineBreak +
              Request.Params[1] + sLineBreak +
              Request.Params[2] + sLineBreak
              );

  Request.Free;
end;
...