@@ -190,6 +190,8 @@ TRALParams = class
190190 function URLEncodedToList (ASource: StringRAL): TStringList;
191191 // / returns all the params in a comma separated UTF8string.
192192 function AsString : StringRAL;
193+ // / returns all the params in a JSON UTF8string format.
194+ function AsJSON : StringRAL;
193195
194196 // / Grabs only the body kind of params, excluding headers and cookies.
195197 property Body: TList read GetBody;
@@ -214,6 +216,9 @@ implementation
214216
215217{ TRALParam }
216218
219+ uses
220+ RALJson;
221+
217222procedure TRALParam.Clone (ASource: TRALParam);
218223begin
219224 ASource.ContentDisposition := Self.ContentDisposition;
@@ -735,6 +740,26 @@ procedure TRALParams.AssignParams(ADest: TStringList; AKind: TRALParamKind;
735740 AssignParams(TStrings(ADest), AKind, ASeparator);
736741end ;
737742
743+ function TRALParams.AsJSON : StringRAL;
744+ var
745+ I: IntegerRAL;
746+ JSON: TRALJSONObject;
747+ begin
748+ Result := ' ' ;
749+ if (FParams <> nil ) and (FParams.Count > 0 ) then
750+ begin
751+ JSON := TRALJSONObject.Create;
752+ try
753+ for I := 0 to Pred(FParams.Count) do
754+ JSON.Add(TRALParam(FParams.Items[I]).ParamName, TRALParam(FParams.Items[I]).AsString);
755+
756+ Result := JSON.ToJSON;
757+ finally
758+ JSON.Free;
759+ end ;
760+ end ;
761+ end ;
762+
738763procedure TRALParams.AssignParams (ADest: TStrings; AKind: TRALParamKind;
739764 ASeparator: StringRAL);
740765var
@@ -1135,12 +1160,14 @@ function TRALParams.FindNameSeparator(const ASource: StringRAL): StringRAL;
11351160begin
11361161 vMin := Length(ASource);
11371162 vPos := Pos(' =' , ASource);
1138- if (vPos > 0 ) and (vPos < vMin) then
1139- Result := ' =' ;
1140-
1141- vPos := Pos(StringRAL(' : ' ), ASource);
1142- if (vPos > 0 ) and (vPos < vMin) then
1143- Result := ' : ' ;
1163+ if (vPos > 0 ) and (vPos <= vMin) then
1164+ Result := ' ='
1165+ else
1166+ begin
1167+ vPos := Pos(StringRAL(' : ' ), ASource);
1168+ if (vPos > 0 ) and (vPos <= vMin) then
1169+ Result := ' : ' ;
1170+ end ;
11441171end ;
11451172
11461173procedure TRALParams.AppendParamLine (const ALine, ANameSeparator: StringRAL;
@@ -1166,7 +1193,8 @@ procedure TRALParams.AppendParamLine(const ALine, ANameSeparator: StringRAL;
11661193 if vParam = nil then
11671194 vParam := NewParam;
11681195 vParam.ParamName := vName;
1169- vParam.AsString := vValue;
1196+ if vValue <> ' ' then
1197+ vParam.AsString := vValue;
11701198 vParam.ContentType := rctTEXTPLAIN;
11711199 vParam.Kind := AKind;
11721200 end ;
0 commit comments