名称/值对中的 TIdHTTPRequestInfo.FormParams

发布于 2024-12-11 06:48:05 字数 376 浏览 0 评论 0原文

我正在使用印地10。我的服务器正在处理表单发布。 ARequestInfo.FormParams 正确包含未解析的表单参数。但是 ARequestInfo.Params.count 是 0。有没有办法让 ARequestInfo.Params 拥有解析的表单参数?或者有没有办法解析ARequestInfo.FormParams

当这应该已经封装在对象中时,我似乎必须编写自己的解析例程。或者也许我缺少一种方法。

更新做了一些更多的挖掘,我发现在我们的局域网内发帖时一切正常。但是,当帖子是通过 LAN 之外的浏览器完成时,则不会。

I am using Indy10. My server is processing a form post. ARequestInfo.FormParams properly contains the unparsed form parameters. But ARequestInfo.Params.count is 0. Is there a way I can have ARequestInfo.Params have the parsed form parameters? Or is there a way to parse ARequestInfo.FormParams?

It seems I have to write my own parsing routine when this should already be encapsulated in the object. Or perhaps I am missing a method.

Update Doing some more digging I have found when doing a post within our LAN everything works ok. But when the post is done from a browser outside of our LAN it does not.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

倒数 2024-12-18 06:48:05

尝试在 TIdHTTPServer 处设置 ParseParams 属性。

或者您可以创建 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;

Try to set the ParseParams property at your TIdHTTPServer.

Or you can make a descendant of the TIdHTTPRequestInfo class for accessing the protected method named DecodeAndSetParams to parse the parameters by yourself.

Here is the example.

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;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文