¿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}¶ms={jsonParams}&xml={xmlFile}&profile={profile}&id={id}")]
¿Alguien ha tenido alguna experiencia con esto?
Gracias