2016-05-22 9 views
0

Ich habe eine WebBroker-Anwendung mit dem Assistenten erstellt. Ich änderte den Code des Standard-Aktion, so dass es wie folgt aussieht:ISAPI Webbroker requestcontentfields ist leer (Länge = 0)

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; 

ich die DLL unter IIS zum Einsatz (6.2 - Server 2012) und getestet, um die DLL einen Web-Browser verwenden.

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

nur für eine gute Maßnahme habe ich versucht,

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

Der Browser

DataSnap Server xx0x

in beiden Fällen gibt.

Es scheint, dass Request.ContentFields nicht durch den Aufruf vom Browser aufgefüllt wird.

Ist dieses Problem für eine bestimmte Version von Delphi und/oder IIS spezifisch? Was verstehe ich nicht?

Ich habe sowohl Seattle als auch Berlin ausprobiert, das Ergebnis ist das gleiche. Danke

P.S. Ich habe auch den Assistenten verwendet, um einen eigenständigen WebBroker zu erstellen. Es hat dieses Problem nicht.

Antwort

0

Nach einiger wirklich tief Google-Suche, ich die Antwort gefunden: (Beachten Sie, dass während der Embarcadero Dokumentation besagt, dass Request.ContentFields den Inhalt der Felder enthält „wenn die Method ist mtPost“, die praktisch nutzlos Dokumentation für Request.QueryFields sagt nichts über 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; 
Verwandte Themen