W jaki sposób można użyć Tidhttp, aby uzyskać żądanie Get z parametrem o nazwie xml?

Z powodzeniem używam Delphi 2010 do tworzenia żądań pobierania http, ale dla jednej usługi, która oczekuje parametru o nazwie „xml”, żądanie kończy się niepowodzeniem z błędem „HTTP / 1.1 400 Bad Request”.

Zauważam, że wywołanie tej samej usługi i pominięcie parametru „xml” działa.

Bez powodzenia wypróbowałem następujące rzeczy:

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;

Wywołanie tego samego adresu URL o nazwie o nazwie „xml” zmienionej na cokolwiek innego, np. „Xml2” lub „nazwa” o takiej samej wartości jak powyżej, również działa. Próbowałem również wielu kombinacji zestawu znaków, ale myślę, że komponent indy zmienia go wewnętrznie.

EDYTOWAĆ

Usługa oczekuje:

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

Czy ktoś miał z tym jakieś doświadczenie?

Dzięki

questionAnswers(1)

yourAnswerToTheQuestion