ISAPI webbroker requestcontentfields 为空(长度 = 0)

ISAPI webbroker requestcontentfields is empty (length = 0)

我使用向导创建了一个 WebBroker 应用程序。我更改了默认操作的代码,使其看起来像这样:

procedure TWebModule1.WebModule1DefaultHandlerAction(Sender: TObject;
  Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
var
  i: Integer;
begin
  i := Request.ContentLength;
  Response.Content :=
    '<html>' +
    '<head><title>DataSnap Server</title></head>' +
    '<body>DataSnap Server x' +
    Request.ContentFields.Text + 'x' + IntToStr(i) + 'x' +
    '</body>' +
    '</html>';
end;

我在 IIS (6.2 - Server 2012) 下部署了 dll,并使用网络浏览器测试了 dll。

http://localhost/MapServer/Mapserver.dll/?param1=hello

为了更好的衡量,我试过了

http://localhost/MapServer/Mapserver.dll/?param1="hello"

浏览器输出

DataSnap Server xx0x

在这两种情况下。

Request.ContentFields 似乎没有被来自浏览器的调用填充。

此问题是否特定于 Delphi and/or IIS 的特定版本?我有什么不明白的?

西雅图和柏林我都试过了,结果是一样的。 谢谢

P.S。我还使用该向导制作了一个独立的 WebBroker。没有这个问题。

经过一些非常深入的 Google 搜索,我找到了答案:(请注意,虽然 Embarcadero 文档指出 Request.ContentFields 包含字段 "when the MethodType is mtPost" 的内容,但实际上没有用的文档对于 Request.QueryFields 什么也没说 mtGet)

procedure TWebModule1.WebModule1DefaultHandlerAction(Sender: TObject;
  Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
var
  i: Integer;
begin
  i := Length(Request.QueryFields.Text);
  Response.Content :=
    '<html>' +
    '<head><title>DataSnap Server</title></head>' +
    '<body>DataSnap Server x' +
    Request.QueryFields.Text + 'x' + IntToStr(i) + 'x' +
    '</body>' +
    '</html>';
end;