¿Cómo puedo usar Tidhttp para hacer una solicitud Get con un parámetro llamado xml?

He estado utilizando Delphi 2010 con éxito para realizar solicitudes de obtención de http, pero para un servicio que espera un parámetro llamado 'xml', la solicitud falla con un error 'HTTP / 1.1 400 Bad Request'.

Me doy cuenta de que llamar al mismo servicio y omitir el parámetro 'xml' funciona.

He intentado lo siguiente sin éxito:

HttpGet('http://localhost/Service/Messaging.svc/SendReports/PDF?xml=<?xml version="1.0"?><email><message><to>[email protected]</to><from>[email protected]</from></message></email>&id=42&profile=A1');

...

function TReportingFrame.HttpGet(const url: string): string;
var
  responseStream : TMemoryStream;
  html: string;
  HTTP: TIdHTTP;
begin
  try
      try
        responseStream := TMemoryStream.Create;
        HTTP := TIdHTTP.Create(nil);
        HTTP.OnWork:= HttpWork;
        HTTP.Request.ContentType := 'text/xml; charset=utf-8';
        HTTP.Request.ContentEncoding := 'utf-8';
        HTTP.HTTPOptions := [hoForceEncodeParams];
        HTTP.Request.CharSet := 'utf-8';
        HTTP.Get(url, responseStream);
        SetString(html, PAnsiChar(responseStream.Memory), responseStream.Size);
        result := html;
      except
        on E: Exception do
            Global.LogError(E, 'ProcessHttpRequest');
      end;
    finally
      try
        HTTP.Disconnect;
      except
      end;
    end;
end;

Llamar a la misma url con el nombre de parámetro 'xml' renombrado a otra cosa, como 'xml2' o 'nombre' con el mismo valor que el anterior también funciona. También he probado varias combinaciones del conjunto de caracteres, pero creo que el componente indy lo está cambiando internamente.

EDITAR

El servicio espera:

[WebGet(UriTemplate = "SendReports/{format=pdf}?report={reportFile}&params={jsonParams}&xml={xmlFile}&profile={profile}&id={id}")]

¿Alguien ha tenido alguna experiencia con esto?

Gracias

Respuestas a la pregunta(1)

Su respuesta a la pregunta