TIdHTTPRequestInfo.FormParams в паре имен/значений

65
5

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

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

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

спросил(а) 2021-01-19T14:16:27+03:00 9 месяцев назад
1
Решение
91

Попробуйте установить свойство 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;

ответил(а) 2021-01-19T14:16:27+03:00 9 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема