Browse Source

* Construct query string, needed in proxy

git-svn-id: trunk@43066 -
michael 5 years ago
parent
commit
75216d3309
1 changed files with 15 additions and 9 deletions
  1. 15 9
      packages/fcl-web/src/base/custmicrohttpapp.pp

+ 15 - 9
packages/fcl-web/src/base/custmicrohttpapp.pp

@@ -52,6 +52,7 @@ Type
   TMicroRequest = Class(TRequest)
   TMicroRequest = Class(TRequest)
   Private
   Private
     FHandler : TRequestHandler;
     FHandler : TRequestHandler;
+    FMyQueryString : String;
     // Return amount of data handled
     // Return amount of data handled
     Procedure DoSetHeader(K,V : String);
     Procedure DoSetHeader(K,V : String);
     Procedure AddQueryField(K,V : String);
     Procedure AddQueryField(K,V : String);
@@ -321,11 +322,19 @@ begin
 end;
 end;
 
 
 procedure TMicroRequest.AddQueryField(K, V: String);
 procedure TMicroRequest.AddQueryField(K, V: String);
+
+Var
+  S : String;
+
 begin
 begin
   if V<>'' then
   if V<>'' then
     QueryFields.Values[K]:=V
     QueryFields.Values[K]:=V
   else
   else
     QueryFields.Add(K+'=');
     QueryFields.Add(K+'=');
+  S:=FMyQueryString;
+  if S<>'' then
+    S:=S+'&';
+  FMyQueryString:=S+K+'='+HTTPEncode(V);
 end;
 end;
 
 
 function TMicroRequest.AddData(Data: PAnsiChar; DataSize: Size_t): Size_t;
 function TMicroRequest.AddData(Data: PAnsiChar; DataSize: Size_t): Size_t;
@@ -360,12 +369,7 @@ Var
   I : integer;
   I : integer;
 
 
 begin
 begin
-  S:=URL;
-  I:=Pos('?',S);
-  if (I<>0) then
-    SetHTTPVariable(hvQuery,Copy(S,I+1,Length(S)-I))
-  else
-    MHD_get_connection_values(FHandler.FConnection, MHD_GET_ARGUMENT_KIND,@GetRequestData,Self);
+  MHD_get_connection_values(FHandler.FConnection, MHD_GET_ARGUMENT_KIND,@GetRequestData,Self);
   MHD_get_connection_values(FHandler.FConnection, MHD_HEADER_KIND,@GetRequestData,Self);
   MHD_get_connection_values(FHandler.FConnection, MHD_HEADER_KIND,@GetRequestData,Self);
   for N in FHandler.WebHandler.ExtraHeaders do
   for N in FHandler.WebHandler.ExtraHeaders do
     begin
     begin
@@ -373,17 +377,19 @@ begin
     If P<>Nil then
     If P<>Nil then
       SetCustomHeader(N,P);
       SetCustomHeader(N,P);
     end;
     end;
+  S:=URL;
+  I:=Pos('?',S);
   if (I>0) then
   if (I>0) then
-    begin
     S:=Copy(S,1,I-1);
     S:=Copy(S,1,I-1);
-    end;
   If (Length(S)>1) and (S[1]<>'/') then
   If (Length(S)>1) and (S[1]<>'/') then
     S:='/'+S
     S:='/'+S
   else if S='/' then
   else if S='/' then
     S:='';
     S:='';
   PathInfo:=S;
   PathInfo:=S;
-
   Inherited;
   Inherited;
+  // We set this afterwards, otherwise double processing
+  if FMyQueryString<>'' then
+    SetHTTPVariable(hvQuery,FMyQueryString)
 end;
 end;
 
 
 { ---------------------------------------------------------------------
 { ---------------------------------------------------------------------