Das scheint ein Problem mit Delphi 10.2 zu sein. Der verantwortliche Code liegt in in
TCustomRESTRequest.DoPrepareRequestBody Zeile 2742
Delphi-Quellcode:
if LContentType = TRESTContentType.ctMULTIPART_FORM_DATA then
begin
// Multipart
// For multipart names of body parameters are written - in contrast to WWWForm (see below)
if (LParam.Kind = TRESTRequestParameterKind.pkFile) then
LMultipartPeerStream.AddFormFile(LParam.Name, LParam.Value, ContentTypeToString(LParam.ContentType))
else
LMultipartPeerStream.AddFormField(LParam.Name, LParam.Value);
end
In Delphi 11 sieht die Sequenz dann so aus
Delphi-Quellcode:
if SameText(AContentType, TRESTContentType.ctMULTIPART_FORM_DATA) then
begin
// Multipart
// For multipart names of body parameters are written - in contrast to WWWForm (see below)
if LParam.Stream <> nil then
LMultipartFormData.AddStream(LParam.Name, LParam.Stream, LParam.Value,
ContentTypeToString(LParam.ContentType))
else if LParam.Kind = TRESTRequestParameterKind.pkFile then
LMultipartFormData.AddFile(LParam.Name, LParam.Value,
ContentTypeToString(LParam.ContentType))
else
LMultipartFormData.AddField(LParam.Name, LParam.Value,
ContentTypeToString(LParam.ContentType));
end
Im Gegensatz zu 10.2 wird hier der ContentType des Parameters mit übergeben.